VS2015 cl在命令行上构建时无法找到CRT库(stido.h,ctype.h等)

Nil*_*ari 17 c++ visual-studio-2015

  • 我安装了最新的VS2015专业版.
  • 打开Visual Studio命令提示符并运行vcvars32.bat
  • 写了一个简单的helloworld.cpp程序(包括stdio.h并打印"hello world")
  • 试过cl helloworld.cpp

我收到以下错误:

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
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

请注意,环境变量中的路径是" C:\ Program Files(x86)\ Windows Kits\10\include\wdf\winrt; "等.但是,文件的实际位置是C:\ Program Files(x86)\Windows Kits\10\include\10.0.10240.0\winrt;

我在这里做错了吗?任何帮助非常感谢.

ps我的真正目的是构建boost 1.58库(但它遇到与上面相同的问题,所以首先想要隔离问题).

pps我注意到以下环境变量.但我无法改变它们.

WindowsSDKLibVersion=wdf\
WindowsSDKVersion=wdf\
Run Code Online (Sandbox Code Playgroud)

Ahm*_*dBM 15

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

看看Microsoft Connect问题 - https://connect.microsoft.com/VisualStudio/feedback/details/1610302/universalcrt-detection-breaks-when-windows-driver-kit-is-installed

  • 但是我需要wdk ......该怎么办? (3认同)

小智 6

就我而言,我将这些路径添加到附加的包含路径中:

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\10.0.10586.0\ucrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\Include\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\共享;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\winrt;$(IncludePath)

并将这些路径添加到额外的 lib 路径中:

C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\um\x86;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x86;$(库路径)


zwc*_*oud 5

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

C1083 无法打开包含文件:'assert.h':没有这样的文件或目录

检查Windows 8.1 SDK and UCRT SDKVS安装程序解决了这个问题。 Windows 8.1 SDK 和 UCRT SDK