VS 2015 C ++ Redistributable不在一个DLL中?

时间:2016-06-16 21:09:15

标签: c++ visual-studio visual-studio-2015 runtime

假设我使用Visual Studio 2015将以下C ++代码构建到HelloWorld.exe,目标是Release,平台x64。

#include <iostream>

int main()
{
    std::cout << "Hello world!!" << std::endl;
    return 0;
}

多年前,我可以简单地复制msvcp###.dll(或msvcr###.dll代表C)和HellowWorld.exe,并拥有一个可运行的程序。

我刚刚安装了VS2015,现在看来我不能带来msvcp140.dll。我的api-ms-win-.....dll文件夹中似乎有70个ish System32文件需要随附。

我知道最好的策略是让他们安装可再发行的...但是对于他们不能的情况,复制.DLL曾经是一个可行的替代方案。还是这样吗?我错过了一些简单的东西吗?

总结一下:我原本以为我可以复制msvcp140.dll并让它发挥作用,但事实并非如此。我错了吗?

注意:我在list of things you are allowed to redistribute中看不到api-ms-....dll个文件。或者它是否被理解为2015年运行时的一部分并随之而来?

2 个答案:

答案 0 :(得分:1)

我倾向于静态链接运行时(/ MT和/ MTd编译器选项),而不是处理安装可再发行组件。

它确实会导致更大的文件大小,但它比到目前为止运送DLL还要小。

答案 1 :(得分:0)

您可以通过安装程序分发VC 2015可重新分发。

https://www.microsoft.com/en-us/download/details.aspx?id=48145

如果这不是一个选项,则将其静态链接。

您还可以根据需要运行以确定所需的其他DLL。您可以忽略api-ms * .dll:Dependency Walker: missing dlls