找不到 corecrt.h: $(UniversalCRT_IncludePath) 是错误的

Cannot find corecrt.h: $(UniversalCRT_IncludePath) is wrong

我刚刚在我的工作笔记本电脑上安装了 Visual Studio 2015 Windows 10.

我在另一台 PC 上克隆了一个存储库,其中包含使用相同版本的 Visual Studio(更新 3)创建的解决方案,始终使用 windows 10.

当我尝试在笔记本电脑上构建解决方案时,出现以下错误:

c:\program files (x86)\microsoft visual studio 14.0\vc\include\crtdefs.h(10): fatal error C1083: Cannot open include file: 'corecrt.h': No such file or directory

this page 中,我读到必须将 $(UniversalCRT_IncludePath) 添加到我的包含路径,但即使在这种情况下,我也会遇到同样的错误。

我检查过 $(UniversalCRT_IncludePath) 指的是这个路径:

C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt

我的笔记本电脑上缺少此路径。相反,我有这个:

C:\Program Files (x86)\Windows Kits\Include.0.10150.0\ucrt

看来window版本不一样。可能这是真的,因为在我的笔记本电脑上我没有安装 1511 windows updgrade,而在另一台电脑上都安装正确。

我的问题是如何在不弄乱路径的情况下在两台电脑中引用 corecrt.h 文件。我想避免使用 hard-link 这些路径,因为它们依赖于 PC。而且我不明白为什么在我的笔记本电脑中路径是错误的,因为它应该是系统相关的而不是连接到解决方案。

我该如何解决这个问题?我知道我可以将我的笔记本电脑更新到相同的 windows 版本,但出于多种原因我想避免使用它。

-- 编辑

我注意到我有这条路:

C:\Program Files (x86)\Windows Kits.1\Include.0.10240.0\ucrt

它具有相同的 10.0.10240.0 版本,但与另一个 windows 套件版本相关,所以在这种情况下可能存在一些问题。在我的笔记本电脑上,我也有 Visual Studio 2013,所以也许它可能来自它,但我无法删除它,因为我正在使用 Visual Studio 2013 维护另一个项目,但我还不能删除它。

也许在 Visual Studio 2015 文件夹中我可以在某些 .bat 文件(vcvarsall.bat 或类似文件)中明确设置 $(UniversalCRT_IncludePath) 但我不知道哪个文件和哪个位置.

你可能已经解决了这个问题,但如果有人来了,我按照提示解决了这个问题 here

基本设置如下系统环境变量:

INCLUDE="C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt"
LIB="C:\Program Files (x86)\Windows Kits\Lib.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\Lib.0.10240.0\ucrt\x64"

可能有更好的最佳实践方法,但是为了超快地修复它,这个方法非常有效。

可能在安装 Visual Studio 时缺少某些东西。 您可以检查是否忘记选择 VC++ 工具集。

  1. Control Panel -> All Control Panel Items -> Programs and Features -> Visual studio 2015
  2. 点击change/uninstall
  3. 选择 VC++2015 toolset(x86,x64) 并安装。

对于Visual Studio Community 2017 RC(15.0.26206.0),可选工具的名称是VC++ 2017 v141 toolset(x86,x64):

我遇到了同样的问题。我在这里尝试了答案。它没有 100% 有效。 我发现 VC++ 2015 工具集(x86、x64)对于 2017 社区版(我现在正在使用)是必需的,但没有添加任何包含或 lib 链接。

此致。

尝试检查项目属性(菜单项目 > 属性)。 在 Configuration Properties > General 下,然后检查 Platform Toolset 和 Windows SDK Version(如果使用 Platform Toolset > VS2015) 设置 Platform Toolset = VS2017 和 Windows SDK Version = 10.x.x 后它对我有用。

对我来说在 Visual Studio 中帮助此设置:

  • 在项目属性 -> VC++ 目录 -> 包含目录 -> 打开以进行编辑。
  • 选中从父项或项目默认值继承的复选框

对于 Visual Studio 2017 年,我必须:

  1. 运行 Visual Studio 安装程序。
  2. Select修改按钮。
  3. 转到 "Individual Components" 选项卡。
  4. 向下滚动到 "Compilers, build tools and runtimes"。
  5. 勾选"Windows Universal CRT SDK".
  6. 安装。

对于Visual Studio 2015 Enterprise,我用和parsley72类似的方法解决了问题:

1. Run the Visual Studio Installer;
2. Select Modify button;
3. Go to "Windows and Web Development";
4. Tick "Universal Windows App Development Tools";
5. Install.

将旧的 Windows SDK(例如 8.1 版/通用版)添加到您的机器(如 parsley72 所述),或者 re-target Project(s) to use one of the Windows SDK(s) installed on your computer.

我刚刚 运行 使用 VS2017 进行了此操作,并且重新定位成功了。虽然我还在等待是否 .

的答案

我没有使用 VC++ 的经验,但我必须为 python 项目构建 ta-lib。由于我不想接触 VC Studio 中的任何内容,但我有在 Unix 下进行常规 C 编程的经验,因此我采取了直接在 Makefile 中添加包含路径的方法;例如:

INCPATH = -I"........\include"-I".......\src\ta_common"-I"...... .....\src\ta_abstract" -I"........\src\ta_abstract\tables" -I".......\src\ta_abstract \frames" -I"C:\Program Files (x86)\Windows Kits\Include.0.10150.0\ucrt" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include"

sub-directories 下有多个 Makefile,所以我不得不对每个 Makefile 进行更改,但它对我来说没问题。

我刚刚在 Windows 上编译 PyTorch 并安装 Windows Universal CRT SDK 时遇到此错误并没有解决它。摆弄之后,似乎有两个原因:

  1. 确保你 运行 vcvarsall.bat。当您启动 VS2017 x64 本机命令提示符时,它会执行 运行 这个 bat 文件。
  2. 设置 vcvars_ver 以更正您机器上的版本。要查找您拥有的版本,请转到 %PROGRAMFILES(X86)%\Microsoft Visual Studio17\Enterprise\VC\Tools\MSVC\。在此文件夹中,您将看到 14.13.26128 等文件夹。所以你设置 vcvars_ver 为 14.13.

我的批处理文件中的以下片段显示了以上两个步骤:

set "VS150COMNTOOLS=%PROGRAMFILES(X86)%\Microsoft Visual Studio17\Enterprise\VC\Auxiliary\Build"
call "%VS150COMNTOOLS%\vcvarsall.bat" x64 -vcvars_ver=14.13

错误的原因可能是因为您没有windows 10 sdk

的更新版本

也可以自主下载安装window10 sdk,

使用这个 link windows 10 sdk,并将其添加到您的系统路径中

hope it helps.

我通过接下来的 3 步解决了这个错误。

1) 所有文件来自:

C:\Program Files (x86)\Windows Kits\Lib.0.17763.0\um\x86
C:\Program Files (x86)\Windows Kits\Lib.0.17763.0\ucrt\x86

复制到:

C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\VS\lib\x86

2) 所有文件来自:

C:\Program Files (x86)\Windows Kits\Lib.0.17763.0\um\x64
C:\Program Files (x86)\Windows Kits\Lib.0.17763.0\ucrt\x64

复制到:

C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\VS\lib\x64

3) 所有文件来自:

C:\Program Files (x86)\Windows Kits\Include.0.17763.0\ucrt

复制到:

C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\VS\include

然后我重建我的项目并且一切正常

您在项目中select编辑的Windows SDK未安装

要么安装你想要的 SDK,要么 select 安装其中一个(注意:selecting 选项将默认为 8.1,在 VS 2017+ 中默认不安装)

要安装 Windows SDK,运行 安装程序并转到 单个组件 并滚动到最底部:

重新安装 windows 10 sdk ,如果你缺少 windows sdk 或者如果它的内容改变了这个错误将会弹出,我在安装 wdk

之后发生了
I find Reason that : Windows Registry

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots]
"KitsRoot10"="C:\Program Files\Windows Kits\10\"

but in Actually 
"KitsRoot10"="C:\Program Files (x86)\Windows Kits\10\"
"AppVerifier64BitAutomationRoot"="C:\Program Files\Application Verifier\"
"KitsRoot81"="C:\Program Files (x86)\Windows Kits\8.1\"

参见: