如何在 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 依赖)- 阅读这篇文章:
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 依赖)- 阅读这篇文章: