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

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

===============>>#1 票数:18 已采纳

  1. 选择项目 - >属性
  2. 选择配置 - >常规
  3. 在如何链接MFC的框中,选择静态链接它。
  4. 选择链接器 - >输入。 Additional Dependencies下 ,添加您需要将应用程序静态链接到的所有库。

===============>>#2 票数:10

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

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

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

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

===============>>#3 票数:4

请注意, Microsoft不建议您将运行时静态链接到项目中 ,因为这会阻止Windows更新来修复关键安全性错误。 如果你在主.exe和.dll文件之间传递内存,也有潜在的问题,就像每个静态链接运行时一样,你可能会遇到malloc / free mismatch问题。

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

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

===============>>#4 票数:0

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

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

===============>>#5 票数:0

如果你想找出你的目标机器缺少哪个dll,那么使用过去用于MSDev的depends.exe,但也可以在这里找到。 在几台目标机器上进行测试应该告诉您需要使用应用程序打包的dll。

  ask by DShook translate from so

未解决问题?本站智能推荐: