C++ VS2015 cl Can';在命令行上构建时,无法找到CRT库(stdio.h、ctype.h等) 我已安装最新的VS2015专业版 打开Visual Studio命令提示符并运行vcvars32.bat 编写了一个简单的helloworld.cpp程序(包括stdio.h和打印“helloworld”) 已尝试cl helloworld.cpp

C++ VS2015 cl Can';在命令行上构建时,无法找到CRT库(stdio.h、ctype.h等) 我已安装最新的VS2015专业版 打开Visual Studio命令提示符并运行vcvars32.bat 编写了一个简单的helloworld.cpp程序(包括stdio.h和打印“helloworld”) 已尝试cl helloworld.cpp,c++,visual-studio-2015,C++,Visual Studio 2015,我得到以下错误: c:\test>cl helloworld.cpp Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x86 Copyright (C) Microsoft Corporation. All rights reserved. helloworld.cpp helloworld.cpp(1): fatal error C1083: Cannot open include file: 'stdi

我得到以下错误:

c:\test>cl helloworld.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

helloworld.cpp
helloworld.cpp(1): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
vcvars32.bat设置的包含路径包括:

INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE;C:\Program Files (x86)\Windows Kits\10\include\wdf\ucrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um;C:\Program Files (x86)\Windows Kits\10\include\wdf\shared;C:\Program Files (x86)\Windows Kits\10\include\wdf\um;C:\Program Files (x86)\Windows Kits\10\include\wdf\winrt;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE;C:\Program Files (x86)\Windows Kits\10\include\wdf\ucrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um;C:\Program Files (x86)\Windows Kits\10\include\wdf\shared;C:\Program Files (x86)\Windows Kits\10\include\wdf\um;C:\Program Files (x86)\Windows Kits\10\include\wdf\winrt;
请注意,环境变量中的路径是“C:\Program Files(x86)\Windows Kits\10\include\wdf\winrt;”等。但是,文件的实际位置是C:\Program Files(x86)\Windows Kits\10\include\10.0.10240.0\winrt

我做错什么了吗?非常感谢您的帮助

p、 我的真正目的是构建Boost1.58库(但是它遇到了与上面相同的问题,所以首先要隔离这个问题)

p、 另外,我注意到以下环境变量。但我无法改变它们

如果已安装WDK(Windows驱动程序工具包-10.0.26639),则会遇到此问题,因为WDK会覆盖包含路径。要使其工作,您必须卸载WDK,它应该可以工作


看看Microsoft Connect问题-

在我的例子中,我将这些路径添加到了附加的include路径中:

C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0\VC\include;C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include;C:\ProgramFiles(x86)\Windows工具包\10\Include\10.0.10586.0\ucrt;C:\ProgramFiles(x86)\Windows Kits\NETFXSDK\4.6\Include\um;C:\ProgramFiles(x86)\Windows Kits\10\Include\10.0.10586.0\shared;C:\ProgramFiles(x86)\Windows工具包\10\Include\10.0.10586.0\um;C:\ProgramFiles(x86)\Windows工具包\10\Include\10.0.10586.0\winrt$(包括路径)

并将这些路径添加到附加库路径:

C:\ProgramFiles(x86)\Windows Kits\10\Lib\10.0.10586.0\um\x86;C:\ProgramFiles(x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x86$(图书馆路径)


在针对Windows SDK 8.1构建VC++项目时,我在VS2017(15.5.5)上遇到了类似的问题:

C1083无法打开包含文件:“assert.h”:没有此类文件或目录

在VS安装程序中检查
Windows 8.1 SDK和UCRT SDK
解决了该问题。

您在其中一个目录中有stdio.h吗?有。所有文件都在include\10.0.10240.0中的正确位置,但不在include\wdf中vcvars脚本假定include子目录中只显示版本号。如果某个东西在那里安装了其他东西,而不是它已损坏或脚本已损坏。如果您手动执行此操作,则应将其撤消。还请注意#include“stdio.h”和#include是不同的。@RossRidge感谢您的回复。“wdf”与10.0.240.0一起位于include\文件夹中。我没有在那里复制它。我是在安装VisualStudio2015、SDK、工具、WDK之类的东西时到达那里的(不确定是哪个安装程序导致它到达那里的)。问题出在vcvarsqueryregistry.bat(由vcvars32.bat调用)中。这就是决定SDK版本的逻辑所在。它按词汇对“include”文件夹下的文件夹进行排序,并查找“wdf”。因为我现在没有使用WDF(Windows驱动程序框架),所以我已经将文件夹重命名为00wdf,现在它可以工作了。我在MSDN网站上提出了一个bug。但是我需要wdk。。。怎么办?有可能把14个VC包含和10个SDK结合起来吗?解决这个问题的方法非常糟糕,但它是有效的。是的,微软和他们的错误解决方案。非常感谢您,build saver.:-)这解决了Windows 10上VC-2017安装WDK 8.1和WDK 10时的问题
WindowsSDKLibVersion=wdf\
WindowsSDKVersion=wdf\