假设我使用 Visual Studio 2015 将以下 C++ 代码构建到 HelloWorld.exe
中,目标版本为 x64 平台。
#include <iostream>
int main()
{
std::cout << "Hello world!!" << std::endl;
return 0;
}
几年前,我可以简单地复制 msvcp###.dll
(或 C 的 msvcr###.dll
)和 HellowWorld.exe
并有一个可运行的程序。
我刚刚安装了VS2015,现在看来不能只带msvcp140.dll
了。我的 System32
文件夹中似乎有 70 ~ish api-ms-win-.....dll
文件需要随附。
我知道最好的策略是让他们安装可再发行组件...但在他们不能安装的情况下,复制 .DLL 曾经是一个可行的替代方案。现在还是这样吗?我是不是漏掉了一些简单的东西?
总结一下:我原以为我可以只复制 msvcp140.dll
让它工作,但事实似乎并非如此。我错了吗?
注意:我在 list of things you are allowed to redistribute 中没有看到 api-ms-....dll
文件.或者它是否理解这是 2015 运行时的一部分并且随之而来?
最佳答案
我倾向于静态链接运行时(/MT 和/MTd 编译器选项),而不是安装可再发行组件。
它确实会导致文件变大,但比目前发布的 DLL 小。
关于c++ - VS 2015 C++ Redistributable 不在单个 DLL 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37869380/