• 安装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 -----------------------------------------------------------------------

  • 相关阅读:
    Mac下安装svn服务器
    php 当前日期加一天和指定日期加一天
    MariaDB与MySQL
    JS中判断null、undefined与NaN的方法
    PHP保留两位小数的几种方法
    jquery的cookie插件
    mysql(5.7以上)查询报错:ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_group_by
    MySQL数据的导出和导入
    qrCode二维码字符串长度太多压缩的问题
    解决 img 标签上下出现的间隙
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/13370239.html
Copyright © 2020-2023  润新知