c++ - 部署使用 C++ 开发的应用程序

标签 c++ c windows compilation visual-studio-2010

我有一个使用 wxWidgets 作为 UI 框架并在 Windows 7 机器上使用 Visual Studio 2010 编译的应用程序。我正在静态链接 wxWidgets。我的应用程序还使用 C dll 进行处理。

现在我正尝试在另一台新安装的机器 (Win7) 上运行这个应用程序。这没有开发人员环境设置。我已将应用程序的可执行文件、支持的dll和其他支持的文本文件复制到 native 。

当应用程序启动时,它给出了以下消息。

程序启动失败,因为您的计算机缺少 MSVCR100d.DLL。尝试重新安装程序以解决此问题

我发现我的 C 库使用的是调试版本,在 Release 模式下编译它解决了这个问题。但它仍然需要 MSVCR100.dll。我认为解决方法是安装 VC++ 可再发行组件包。但不确定这是最好的方法。

这是我的问题。

  1. 您通常如何部署应用程序?你们也提供 VC++ 可再发行组件包吗?
  2. 我在 64 位机器上编译它并在 32 位机器上测试。这个可以吗?还是我需要为 32 位单独编译?
  3. 我可以静态链接到运行时库吗?这样我就可以发送我的 DLL 和其他文件。
  4. 在构建将在多台机器上运行的可执行文件时,我还应该注意哪些其他常见事项?

以下是我的一些可能相关的设置。

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 ...

所以在回答你的问题时:

  1. 我更喜欢静态链接到运行时。
  2. 那真的不是问题。只是不要尝试在 32 位操作系统上运行 64 位编译二进制文件。
  3. 是的。
  4. 注意您的最低规范。即,如果您需要支持 Pentium 3 等,请不要使用 SSE4。

关于c++ - 部署使用 C++ 开发的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4296813/

相关文章:

c++ - 执行 AES 解密后字符串末尾的 Crypto++ 和垃圾

c++ - boost program_options中vector <string>选项的拆分值

c - http c 客户端套接字中的 301/302 错误

c - 我从文件中读取一个字符串并将其存储到一个数组中,但是我如何知道数组的长度呢?

C++ 默认构造函数缺失,我无法编译

opencv - libopencv_calib3d : undefined reference to `std::__throw_out_of_range_fmt(char const*, …)@GLIBCXX_3.4.20'

c - 使用 sprintf() 连接格式化字符串是否安全?

python - Windows 上 cvxopt 的导入问题

.net - Windows 中没有 makecert 的自签名证书?

c# - 在 Windows 2008 R2 中注册我的密码过滤器后没有结果