Visual Studio 2019 能否将其所需的 DLL 打包到一个小的 .exe 文件中?

Lau*_*hoo 8 c dll software-distribution visual-studio

我使用Visual Studio 2019用C++ WinAPI做了一个Windows应用程序,完成后,我构建了它,并在我的电脑上执行。它完美地工作。然后我发给了我没有 Visual Studio 的朋友。它说它需要“msvcp140d.dll”“ucrtbased.dll”“vcruntime140_1d.dll”“vcruntime140d.dll”来打开它。

然后我在我的电脑中找到它们,将它们与我的应用程序放在同一个目录中,然后将它们发送给我的朋友。它也工作得很好。

但我的问题是“有没有办法只用 Visual Studio 2019 打包它们?” 包含大量 DLL 的小应用程序有点奇怪。

phu*_*clv 7

首先,您发送了错误的文件。带有d类似后缀的文件仅用于调试不得分发

您不能重新分发 Visual Studio 中包含的所有文件;您只能重新分发 Redist.txt 或在线“REDIST 列表”中指定的文件。应用程序的调试版本和各种 Visual C++ 调试 DLL 不可再分发。有关更多信息,请参阅选择部署方法。

确定要重新分发的 DLL

最终的可执行文件必须在发布模式下编译并使用这些 DLL 的发布版本。不要发布调试二进制文件。由于为调试目的添加的逻辑,它们非常慢

而且您实际上不需要发送 DLL,但您应该告诉用户安装相应的VC 可再发行组件包。它是Visual Studio 项目的运行时( CRT ),其中包含printf, memcpy...等功能。如果您在项目中不使用任何 DLL,则不需要查找任何其他 DLL

它也可以在运行时库链接静态通过更改选项/MD/MT。这样,最终的 exe 文件将是独立的(不需要额外的运行时 DLL),但它也会更大,并且当包更新以修复错误或性能问题时,您将无法使用较新的库函数。同样,无论您是静态链接还是动态链接,您都必须在发布模式下进行编译

也可以看看