You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt源码二次编译报错:CMake调用多版本Windows SDK冲突

错误原因及解决思路

这个错误的核心是Windows SDK版本冲突,同时伴随编译缓存过期问题,和你修改的代码无关,具体原因如下:

  • 多版本Windows SDK同时被引入:你的系统中安装了两个不同版本的Windows 10 SDK(10.0.26100.0和10.0.22621.0),本次编译时VS 2019的命令行环境同时加载了两个版本的头文件路径,导致corecrt.h被重复包含,其中的_CrtEnableIf模板被多次定义。
  • 编译缓存过期混乱:数月未操作后,之前编译生成的CMake/Ninja缓存记录的SDK路径与当前环境不匹配,即使回改代码,缓存里的旧路径配置依然会导致编译时头文件查找逻辑出错。
  • 环境变量被意外修改:可能期间系统的INCLUDE环境变量被改动,加入了另一个SDK版本的路径,打乱了头文件的查找顺序。

解决步骤

  1. 清理编译缓存
    进入你之前执行configure.bat的Qt源码编译目录,删除CMakeCache.txt文件和CMakeFiles文件夹,彻底清除旧的编译配置缓存。

  2. 统一Windows SDK版本

    • 打开VS 2019 Installer,进入修改界面,只保留一个你需要的Windows 10 SDK版本(比如10.0.22621.0),卸载多余版本。
    • 或者在命令行工具中手动指定SDK版本:
      set WindowsSdkVersion=10.0.22621.0
      
      执行后再重新运行ninja。
  3. 检查环境变量
    打开命令行执行echo %INCLUDE%,查看输出的路径中是否同时存在两个SDK的include目录,若有则删除多余的路径,确保只有一个SDK版本的路径被包含。

  4. 重新初始化编译环境
    关闭当前的命令行窗口,重新以管理员身份打开Admin x64 Native Tools Command Prompt for VS 2019,确保环境变量干净,再进入编译目录执行ninja。

内容的提问来源于stack exchange,提问作者Lillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 07:03:12