如何在 Visual Studio 2015 中更新我的 C++ 项目以使用新的通用 CRT?

How to I update my C++ project in Visual Studio 2015 to use the new Universal CRT?

VS2015 将我的项目更新到新的平台工具集 v140 后,由于 linker 错误而无法构建:LNK1104 无法打开文件 'libucrt.lib'。

由于本文中提到的新通用 CRT,此库似乎已被移动:http://blogs.msdn.com/b/vcblog/archive/2015/03/03/introducing-the-universal-crt.aspx?PageIndex=2

虽然这篇文章确实告诉我我现在应该 link 做什么,但它没有提供如何做的说明。

我的解决方案生成它使用的 .exe 和 .dll。我不知道如何处理下面文章描述的矩阵。

发布 DLL (/MD):msvcrt.lib vcruntime.lib ucrt.lib

释放静态 (/MT): libcmt.lib libvcruntime.lib libucrt.lib

转换项目时,需要确保更新包含和 linker 设置以指向新的 CRT。

对于包含,添加以下内容:

$(UniversalCRT_IncludePath)

对于 link,根据您的目标处理器添加以下内容之一:

$(UniversalCRT_LibraryPath_x86)
$(UniversalCRT_LibraryPath_x64)
$(UniversalCRT_LibraryPath_arm)

内置变量 $(LibraryPath) 解析为在 Visual Studio 中构建应用程序所需的所有库路径,包括 VS 2015 中的 UCRT 路径。

注意:您可能还想更新 include 路径 ,可移植的内置变量是:$(IncludePath).

或者更好的是,如果您不需要库或包含路径自定义,则使用默认值 (select <inherit from parent or defaults>)。

注2:可以同时调整多个项目和多个目标的路径,只需select多个项目,然后select"properties".

我已经下载了 SDK 10.0.10586.0,现在在 C:\Program Files (x86)\Windows Kits\Lib.0.10586.[=17 中包含库 libucrt.lib =].但是我无法让链接器找到这个库;它使用 10240(以前安装的版本)。

上面提到的宏,$(LibraryPath)和$(UniversalCRT_LibraryPath_x64),都是指C:\Program Files (x86)\Windows Kits\lib.0.10240。 0\ucrt\x64。我不知道如何更改这些宏的值,这可能是让链接器使用正确库所必需的。

Windows 7 Pro,64 位,Visual Studio 2015 更新 1. 链接静态库、C++ 和英特尔 Fortran 项目。

默认情况下,如果您使用 vs2015 编译项目,将使用通用 CRT。 (没有什么特别需要做的)

但如果您想静态 link(并摆脱 ucrt 依赖)- 阅读这篇文章: