我可以将Visual Studio 2015 C++ Redistributable DLL与我的应用程序捆绑在一起吗?

a p*_*erd 32 c++ windows dll visual-studio visual-studio-2015

我使用Microsoft Visual Studio 2015 Community Edition构建了一个C++应用程序.我正在使用Advanced Installer来确保Visual Studio 2015Visual C++ Redistributable是先决条件.

但是,可再发行的安装程序并不完美.我的一些用户报告说可再发行安装程序挂起,或者说它无法安装,然后用户得到"此程序无法启动,因为您的计算机缺少MSVCP140.dll"错误.

根据微软的说法,我现在可以将可再发行的DLL与我的应用程序一起打包,尽管他们不推荐它:

若要部署可再发行的Visual C++文件,可以使用Visual Studio中包含的Visual C++ Redistributable Packages(VCRedist_x86.exe,VCRedist_x64.exe或VCRedist_arm.exe)....也可以在应用程序本地文件夹中直接安装可再发行的Visual C++ DLL,该文件夹是包含可执行应用程序文件的文件夹.出于维修原因,我们不建议您使用此安装位置.

有4个文件C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x64\Microsoft.VC140.CRT.这是否意味着我只需要在安装过程中将它们复制到我的应用程序目录中?

  • MyApp.exe的
  • concrt140.dll
  • msvcp140.dll
  • vccorlib140.dll
  • vcruntime140.dll

这样可以吗?我需要出示许可证吗?为什么没有更多人这样做而不需要再次预安装可再发行组件?

dxi*_*xiv 16

有4个文件C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x64\Microsoft.VC140.CRT.这是否意味着我只需要在安装过程中将它们复制到我的应用程序目录中?

是的,你引用的段落就是这个意思.

这样可以吗?我需要出示许可证吗?为什么没有更多人这样做而不需要再次预安装可再发行组件?

从技术上讲,这样做是可以的.如果你想成为迂腐的话,你可以包括在一个笔记readmehelp/about大意VC++ 2015 redistributables provided in "local deployment" mode是明确微软允许部署在Visual C++.

至于为什么更多的人不这样做,我猜(在那些关心的人中):

  • 对于单个模块应用程序来说,MyApp.exe它更容易构建它与静态链接的所有东西,以消除外部依赖开始;
  • 包括那些文件从分发(可能是下载)大小节省1+ MB;
  • 使用runtime("local deployment")的私有副本运行将更新的责任转移给维护者,以便在进行关键/安全修复的情况下,必须及时重新发布包 - 而不是"central deployment"通过Windows Update传递的位置,用好这两个坏的,可能带来.