zoukankan      html  css  js  c++  java
  • 安装wdk后对ms c++命令行编译器的影响

    浪费了好几小时,我的QT编译不了,提示:fatal error C1083: 无法打开包括文件: “corecrt.h”: No such file or directory

    这应该是一个微软造成的一个BUG。

    估计所有靠vcvarsall.bat的编译器都会有这个问题吧,比如:make,gyp,ninja等

    之前明明是好的,这种情况感觉是找不到SDK了,或者 SDK目录有问题。想了昨天 晚上安装 了WDK,可能是这个的原因 ,于是把WDK卸载果然好了。

    经过仔细研究发现,安装WDK之后 会使include和lib环境变量出错("VS2015 x64 Native Tools Command Prompt)。

    这个命令会运行:"%VSInstallDir%VCvcvarsall.bat", which eventually
    calls "%VS140COMNTOOLS%vcvarsqueryregistry.bat"。这个vcvarqueyryregistry.bat通过遍历试图去查找%ProgramFiles(x86)%Windows Kits10include来查找 windows sdk版本的目录 ,查是WDK在这里面是一个例外,他会使这个遍历查找SDK的代码出错。.

    image

    然后WindowsSDKVersion,WindowsSDKLibVersion,UCRTVersion这几个变量都会错误的设置为WDF,这是导致编译器找不到头文件和LIB文件的根本原因。

    https://stackoverflow.com/questions/31862627/vs2015-cl-cant-find-crt-libs-stdio-h-ctype-h-etc-when-building-on-command-l

    解决方案:

    1.卸载WDK
    2.使用下面该当临时进行修复

    修改vcvarsqueryregistry.bat代码

    @REM Get windows 10 sdk version number
    -@if not "%WindowsSdkDir%"=="" @FOR /F "delims=" %%i IN ('dir
    "%WindowsSdkDir%include" /b /ad-h /on') DO @set WindowsSDKVersion=%%i
    +@if not "%WindowsSdkDir%"=="" @set WindowsSDKVersion=10.0.10240.0
    @if not "%WindowsSDKVersion%"=="" @SET WindowsSDKLibVersion=%WindowsSDKVersion%
    @if not "%WindowsSdkDir%"=="" @set
    WindowsLibPath=%WindowsSdkDir%UnionMetadata;%WindowsSdkDir%References;%WindowsSdkDir%ReferencesWindows.Foundation.UniversalApiContract1.0.0.0;%WindowsSdkDir%ReferencesWindows.Foundation.FoundationContract1.0.0.0;%WindowsSdkDir%Referencesindows.Networking.Connectivity.WwanContract1.0.0.0
    @@ -71,7 +71,7 @@
    )
    )
    @REM get windows 10 sdk version number
    -@if not "%WindowsSdkDir%"=="" @FOR /F "delims=" %%i IN ('dir
    "%WindowsSdkDir%include" /b /ad-h /on') DO @SET WindowsSDKVersion=%%i
    +@if not "%WindowsSdkDir%"=="" @set WindowsSDKVersion=10.0.10240.0
    @if not "%WindowsSDKVersion%"=="" @SET WindowsSDKLibVersion=%WindowsSDKVersion%
    @if not "%WindowsSdkDir%"=="" @set
    WindowsLibPath=%WindowsSdkDir%UnionMetadata;%WindowsSdkDir%References;%WindowsSdkDir%ReferencesWindows.Foundation.UniversalApiContract1.0.0.0;%WindowsSdkDir%ReferencesWindows.Foundation.FoundationContract1.0.0.0;%WindowsSdkDir%Referencesindows.Networking.Connectivity.WwanContract1.0.0.0
    @@ -289,7 +289,7 @@
    )
    )
    @if "%UniversalCRTSdkDir%"=="" exit /B 1
    xxxxx@FOR /F "delims=" %%i IN ('dir "%UniversalCRTSdkDir%include" /b /ad-h /on')
    DO @SET UCRTVersion=%%i
    +@SET UCRTVersion=10.0.10240.0
    @exit /B 0
    :GetUniversalCRTSdkDirHelper64
    @@ -299,7 +299,7 @@
    )
    )
    @if "%UniversalCRTSdkDir%"=="" exit /B 1
    xxxxx@FOR /F "delims=" %%i IN ('dir "%UniversalCRTSdkDir%include" /b /ad-h /on')
    DO @SET UCRTVersion=%%i
    +@SET UCRTVersion=10.0.10240.0
    @exit /B 0
    @REM -----------------------------------------------------------------------

  • 相关阅读:
    容器化的Apache服务并监控
    Jenkins配置报告与邮件插件
    Jmeter(二十八)_Docker+Jmeter+Gitlab+Jenkins+Ant(容器化的接口自动化持续集成平台)
    Jmeter(二十二)_jenkins配置gitlab插件与ant插件
    Jmeter(二十二)_脚本上传Gitlab
    Jmeter(二十七)_Beanshell保存响应内容到本地
    Jmeter(二十六)_数据驱动测试
    IT实用技术资源整理
    Jmeter(二十五)_Xpath关联
    Jmeter(二十四)_服务器性能监控
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/13370239.html
Copyright © 2011-2022 走看看