如何打包visual studio c ++项目以供发布?

时间:2008-08-06 09:49:27

标签: c++ visual-studio

我想知道如何在.exe中创建包含所有必需的dll文件的发布版本,这样程序就可以在非开发机器上运行,而无需在目标机器上安装microsoft可再发行组件。

如果不这样做,您将收到应用程序配置不正确并重新安装的错误消息。

6 个答案:

答案 0 :(得分:17)

  1. 选择项目 - >特性
  2. 选择配置 - >一般
  3. 在如何链接MFC的框中,选择静态链接它。
  4. 选择链接器 - >输入。在附加依赖项下,添加您需要将应用静态链接到的所有库。

答案 1 :(得分:10)

您需要将所有项目的运行时库(在C / C ++ - >代码生成下)设置为静态链接,这与以下默认构建配置相关:

  • 多线程调试/发布
  • 单线程调试/发布

与这些库的“DLL”版本相反。

即使您这样做,根据您使用的库,您可能必须安装合并模块/框架/等。这取决于您的依赖项的静态LIB版本是否可用。

答案 2 :(得分:4)

请注意Microsoft do not recommend that you static link the runtime into your project,因为这可以防止Windows更新服务以修复重要的安全漏洞。如果你在主.exe和.dll文件之间传递内存,也有潜在的问题,就好像这些静态链接中的每一个都会导致运行时最终出现malloc / free mismatch问题。

您可以将DLL与可执行文件一起包含,而不将它们编译到.exe中而不运行redist工具 - 这就是我所做的,它似乎工作正常。

美中不足的唯一问题是,如果您要分发各种Windows版本,则需要包含两次文件 - 较新的操作系统需要清单定义目录中的文件,较旧的操作系统需要所有文件程序目录。

答案 3 :(得分:0)

您应该使用静态链接,并在其他依赖项下添加所需的所有库。

答案 4 :(得分:0)

如果您想找出目标机器缺少哪个dll,请使用以前用于MSDev的depends.exe,但也可以找到here。在几台目标机器上进行测试应该告诉您需要将哪些dll打包到您的应用程序中。

答案 5 :(得分:0)

您正在寻找静态链接(而不是动态链接)

我不确定有多少MS可再发行组件静态链接。