我有一个使用 wxWidgets
作为 UI 框架并在 Windows 7 机器上使用 Visual Studio 2010 编译的应用程序。我正在静态链接 wxWidgets
。我的应用程序还使用 C dll 进行处理。
现在我正尝试在另一台新安装的机器 (Win7) 上运行这个应用程序。这没有开发人员环境设置。我已将应用程序的可执行文件、支持的dll和其他支持的文本文件复制到 native 。
当应用程序启动时,它给出了以下消息。
程序启动失败,因为您的计算机缺少 MSVCR100d.DLL。尝试重新安装程序以解决此问题
。
我发现我的 C 库使用的是调试版本,在 Release
模式下编译它解决了这个问题。但它仍然需要 MSVCR100.dll
。我认为解决方法是安装 VC++ 可再发行组件包。但不确定这是最好的方法。
这是我的问题。
- 您通常如何部署应用程序?你们也提供 VC++ 可再发行组件包吗?
- 我在 64 位机器上编译它并在 32 位机器上测试。这个可以吗?还是我需要为 32 位单独编译?
- 我可以静态链接到运行时库吗?这样我就可以发送我的 DLL 和其他文件。
- 在构建将在多台机器上运行的可执行文件时,我还应该注意哪些其他常见事项?
以下是我的一些可能相关的设置。
General :
Use of MFC : Use standard windows libraries
Use of ATL : Not using
C/C++ :
Runtime library : Multi-threaded(/MT)
如有任何帮助,我们将不胜感激。
最佳答案
它试图在没有它的机器上使用仅调试 DLL。
您的问题是由于 msvcr100d.dll 是尾随 d 指示的仅调试 dll。
因此您没有使用/MT,您实际上使用的是/MDd。如果您使用/MT 那么它不会尝试加载该 DLL ...
所以在回答你的问题时:
- 我更喜欢静态链接到运行时。
- 那真的不是问题。只是不要尝试在 32 位操作系统上运行 64 位编译二进制文件。
- 是的。
- 注意您的最低规范。即,如果您需要支持 Pentium 3 等,请不要使用 SSE4。
关于c++ - 部署使用 C++ 开发的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4296813/