使用VS2015为Vista编译C++

问题描述:

几天前,我在微软论坛的标题中提出了这个问题。 我得到了两个选项,恕我直言,不是很好:使用VS2015为Vista编译C++

  1. 在目标机器上安装VS2015可再分发。
  2. 静态编译,以便代码不会调用VS2015 DLL文件。

第一个选项大大增加了我的应用程序的安装时间。

第二个选项大大增加了二进制文件的大小,增加了编译时间,不适用于使用标志/ CLR编译时。

现在看来,通过将我的开发迁移到Visual Studio 2015,我不得不放弃对Vista的支持(实际上,对于Windows 7)或者提供比以前提供的更差的产品。

注意:我跳过使用平台Toolset = v140_xp将解决问题,但显然它不会。

请赐教一个更好的解决方案。

+0

VS2015可重新分配是正确的做法。 –

+1

即使您使用的是早期版本的Visual Studio,仍然会遇到此问题。旧版本的Windows不能可靠地保证有一个更新,它会在发布后安装新的MSVCRT DLL。 [我很早就回答了关于VS 2010二进制文件的这个问题。](http://*.com/questions/6956747/c-sharp-missing-msvcr100-dll/6963678#6963678)答案仍然适用于VS 2015. [2015下载](https://www.microsoft.com/en-us/download/details.aspx?id=48145) – selbie

+0

在较旧版本的VS中,您可以添加所需的DLL文件(例如msvcp110。 DLL,msvcr110.dll)到您的安装。在我的情况下,它解决了这个问题。不再。添加vcruntime14。DLL只会将问题提前一步移到缺少DLL文件的新列表中。 – Shaul

事情与VS2015有所变化。本文解释您需要做什么:http://blogs.msdn.com/b/vcblog/archive/2015/03/03/introducing-the-universal-crt.aspx

总之,Universal CRT现在是Windows组件。它随Windows 10提供,并通过早期版本的Windows更新提供。您的选项:

  1. 依靠Windows更新软件包。
  2. 应用运行时可再发行组件。
  3. 静态链接,这是强烈不鼓励。
  4. 部署应用程序本地安装运行时所需的二进制文件。

此最终选项与您目前的操作相符。文章说:

支持通用CRT的应用程序本地部署。要获取应用程序本地部署的二进制文件,请安装Windows 10的Windows软件开发工具包(SDK)。二进制文件将安装到C:\ Program Files(x86)\ Windows Kits \ 10 \ Redist \ ucrt。您需要将所有DLL复制到您的应用程序中(请注意,不同版本的Windows中必须使用的DLL集合不同,因此您必须包含所有DLL才能让程序在所有受支持的Windows版本上运行)。