首页 文章

VS 2015 C Redistributable不在一个DLL中?

提问于
浏览
1

假设我使用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 . 我的 System32 文件夹中似乎有70~ish api-ms-win-.....dll 文件需要附带它 .

我知道最好的策略是让他们安装可再发行的...但是对于他们不能的情况,复制.DLL曾经是一个可行的选择 . 还是这样吗?我错过了一些容易的事吗?

总结一下:我以为我可以复制 msvcp140.dll 并让它工作,但似乎并非如此 . 我错了吗?

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

2 回答

  • 0

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

    它确实会导致更大的文件大小,但它比远程运送DLL要小 .

  • 1

    您可以使用安装程序分发VC 2015可再发行组件 .

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

    如果这不是一个选项,静态链接它 .

    你也可以运行取决于确定其他什么DLL 's you need. You can ignore api-ms*.dll' s:Dependency Walker: missing dlls

相关问题