如何打包VisualStudioC++项目发布?

如何打包VisualStudioC++项目发布?,c++,visual-studio,C++,Visual Studio,我想知道如何制作一个发布版本,将所有必要的dll文件都包含在.exe中,这样程序就可以在非开发机器上运行,而不必在目标机器上安装microsoft可再发行版本 如果不这样做,您将收到错误消息,说明应用程序配置不正确,需要重新安装。您将使用静态链接,而不是动态链接 我不确定有多少MS可再发行文件是静态链接的。如果您要查找目标计算机缺少的dll,请使用MSDev附带的depends.exe,但也可以找到。在一些目标计算机上测试此功能,应该会告诉您需要将哪些dll与应用程序打包。您需要将所有项目的C/

我想知道如何制作一个发布版本,将所有必要的dll文件都包含在.exe中,这样程序就可以在非开发机器上运行,而不必在目标机器上安装microsoft可再发行版本


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

您将使用静态链接,而不是动态链接


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

如果您要查找目标计算机缺少的dll,请使用MSDev附带的depends.exe,但也可以找到。在一些目标计算机上测试此功能,应该会告诉您需要将哪些dll与应用程序打包。

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

多线程调试/发布 单线程调试/发布 与这些库的DLL版本相反

即使这样做,也可能需要安装合并模块/框架等,具体取决于所使用的库。这取决于依赖项的静态库版本是否可用

选择项目->属性 选择配置->常规 在应如何链接MFC的框中,选择静态链接它。 选择链接器->输入。在“附加依赖项”下,添加需要应用程序静态链接的库。 请注意,这会阻止windows update为其提供服务,以修复关键的安全漏洞。如果您在主.exe和.dll文件之间传递内存,就好像这些静态链接中的每一个都在运行时传递一样,那么也可能会出现潜在的问题,最终会出现malloc/free不匹配问题

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


唯一的美中不足之处是,如果您要为广泛的Windows版本分发文件,则需要包含两次这些文件-较新的OSs需要在清单定义的目录中包含这些文件,而较老的程序需要程序目录中的所有文件。

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

我可能缺少一些东西,我不是专家,但在遵循您的步骤后,我仍然必须打包exe文件夹中的所有dll。OP不是打算把所有东西都打包到exe文件中吗?@BruceConnor。静态链接库将它们包含在可执行文件中。相反的是动态链接,它可以让可执行文件在启动时查找dlls=dunamic链接库。只需使用Inno Setup之类的安装向导即可。如果您只需要打包一堆文件,Inno安装程序尤其容易使用。