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

2021-12-30 00:00:00 c++ crt visual-studio-2015

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

After VS2015 updated my project to the new Platform toolset v140, it fails to build due to a linker error : LNK1104 cannot open file 'libucrt.lib'.

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

It appears this library has been moved around due to the new Universal CRT as mentioned in this article : http://blogs.msdn.com/b/vcblog/archive/2015/03/03/introducing-the-universal-crt.aspx?PageIndex=2.

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

While the article does tell me what I should link towards now, it does not provide instructions how.

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

My Solution generates a .exe and a .dll it uses. I do not know what to do with the matrix the article describes below.

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

Release DLLs (/MD ): msvcrt.lib vcruntime.lib ucrt.lib

发布静态(/MT):libcmt.lib libvcruntime.lib libucrt.lib

Release Static (/MT ): libcmt.lib libvcruntime.lib libucrt.lib

推荐答案

转换项目时,您需要确保更新包含和链接器设置以指向新的 CRT.

When you convert your project, you need to make sure you update both the includes AND the linker settings to point to the new CRT.

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

For includes, add the following:

$(UniversalCRT_IncludePath)

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

For link, add one of the following depending on your target processor:

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

相关文章