Qt 项目编译错误排查与解决记录
Qt 项目编译错误排查与解决记录项目信息项目路径D:\ai_xi_bai_projext_code\code\Chap01_Intro\samp1_1HelloWorldQt 版本Qt 6.2.4 MSVC 2019 64bit编译器MSVC 2019 (Visual Studio 2019)操作系统Windows 11通用背景为什么需要在 .pro 中手动配置 SDK 路径本项目的编译环境Qt 6.2.4 MSVC 2019由于安装方式或环境配置原因qmake 未能自动检测到 Windows SDK 的路径导致编译器和链接器不知道去哪里找 SDK 的头文件和库文件。因此必须在.pro文件中手动指定 SDK 路径。Windows SDK 的目录结构如下C:\Program Files (x86)\Windows Kits\10\ ├── Include\10.0.19041.0\ │ ├── ucrt\ ← C 运行时头文件stddef.h, crtdbg.h, stdio.h … │ ├── um\ ← 用户模式 API 头文件windows.h, shellapi.h … │ └── shared\ ← 共享头文件 ├── Lib\10.0.19041.0\ │ ├── ucrt\x64\ ← C 运行时库libucrt.lib … │ └── um\x64\ ← 用户模式 API 库shell32.lib, user32.lib … └── bin\10.0.19041.0\ └── x64\ ← SDK 工具rc.exe, mt.exe …下面三个错误根源都是.pro中手动配置的 SDK 路径不完整——只配了ucrt缺少um和shared。错误一C1083 找不到 UCRT 头文件stddef.h / crtdbg.h / yvals.h错误现象cstddef:12: error: C1083: 无法打开包括文件: stddef.h: No such file or directory yvals.h:12: error: C1083: 无法打开包括文件: crtdbg.h: No such file or directory cstddef:12: error: C1083: 无法打开包括文件: stddef.h: No such file or directory根因这三个是编译阶段的错误比链接错误更早出现。stddef.h、crtdbg.h是UCRTUniversal C Runtime的头文件它们被 MSVC 的cstddef、yvals.h等 C 标准库头文件间接引用只有把$$SDK_ROOT/Include/$$SDK_VER/ucrt加入INCLUDEPATH编译器才能找到它们当.pro中未添加任何 SDK Include 路径时编译器在默认搜索路径中找不到这些头文件导致编译失败。这些错误先于链接错误出现是排查的第一步。错误二LNK1104 找不到系统库shell32.lib错误现象:-1: error: LNK1104: 无法打开文件shell32.lib根因这是链接阶段的错误。编译通过后链接器需要将系统 API 库如shell32.lib链接到可执行文件。Windows SDK Lib 子目录包含内容ucrt\x64\C 运行时库libucrt.lib 等um\x64\系统 API 库shell32.lib、user32.lib、kernel32.lib 等shell32.lib位于Lib\10.0.19041.0\um\x64\但.pro中只添加了-L$$SDK_ROOT/Lib/$$SDK_VER/ucrt/x64UCRT 库路径缺少了um/x64路径链接器在 UCRT 目录下找不到shell32.lib错误三LNK1158 找不到 rc.exe错误现象:-1: error: LNK1158: 无法运行rc.exe排查过程确认 rc.exe 存在C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\rc.exe存在C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\rc.exe存在检查 VS 2019 MSVC 工具链目录D:\visual_studio_2019\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\下没有rc.exe检查 PATH 环境变量PATH 中未包含 Windows SDK 的 bin 目录根因rc.exe资源编译器是Windows SDK的工具不属于 MSVC。链接器在链接完成后需要用rc.exe将 manifest 嵌入 exe但 PATH 中找不到 SDK bin 目录。统一解决方案第一步修复 .pro 文件解决错误一 错误二补全所有 3 个 SDK 子目录的 Include编译用和 Lib链接用路径SDK_ROOT C:/Program Files (x86)/Windows Kits/10 SDK_VER 10.0.19041.0 # Include 路径 —— 编译器找头文件用 INCLUDEPATH $$SDK_ROOT/Include/$$SDK_VER/ucrt # C 运行时头文件stddef.h 等 INCLUDEPATH $$SDK_ROOT/Include/$$SDK_VER/um # 系统 API 头文件 INCLUDEPATH $$SDK_ROOT/Include/$$SDK_VER/shared # 共享头文件 # Lib 路径 —— 链接器找 .lib 用 LIBS -L$$SDK_ROOT/Lib/$$SDK_VER/ucrt/x64 # C 运行时库 LIBS -L$$SDK_ROOT/Lib/$$SDK_VER/um/x64 # 系统 API 库shell32.lib 等 # 额外的编译选项 QMAKE_CXXFLAGS /I$$SDK_ROOT/Include/$$SDK_VER/ucrt QMAKE_CXXFLAGS /I$$SDK_ROOT/Include/$$SDK_VER/um QMAKE_CXXFLAGS /I$$SDK_ROOT/Include/$$SDK_VER/shared第二步添加 SDK bin 到 PATH解决错误三将以下路径添加到用户环境变量 PATHC:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64第三步清理并重新构建删除旧的 build 目录让 qmake 重新生成 Makefile重启 Qt Creator让新 PATH 生效重新qmake - Build提示如果通过 Visual Studio 的Developer Command Prompt for VS 2019启动 Qt Creator开发环境会自动配好所有 SDK 路径从根本上避免以上三个错误。经验总结Windows SDK 目录结构要记清Include/下有ucrt/、um/、shared/三个子目录Lib/下同样有ucrt/、um/两个子目录bin/下有rc.exe等工具手动配置 SDK 路径时必须同时添加 Include 和 Lib 的所有必要子目录ucrt um shared缺一不可三个错误的本质是同一问题缺ucrtInclude → 编译报 C1083找不到 stddef.h, crtdbg.h缺umLib → 链接报 LNK1104找不到 shell32.lib缺binPATH → 链接后报 LNK1158找不到 rc.exe出问题看 Makefile.pro修改后运行 qmake 会生成 MakefileMakefile.Debug 里的LIBS、INCPATH等变量直接反映最终编译配置是排查的关键最佳的启动方式通过Developer Command Prompt for VS启动 Qt CreatorSDK 路径、环境变量全都自动配好可以彻底避免此类问题

相关新闻

TMS320C2x DSP汇编指令深度解析:从MAR、MPY到NORM的实战指南

TMS320C2x DSP汇编指令深度解析:从MAR、MPY到NORM的实战指南

1. 项目概述:为什么我们要深挖TMS320C2x汇编指令?如果你正在或即将与德州仪器(TI)的TMS320C2x系列数字信号处理器(DSP)打交道,尤其是在电机控制、音频编解码或早期通信设备等对实时性和效率有极…

2026/10/19 18:56:26 阅读更多 →
Unity游戏开发:从基础到进阶的智能追踪导弹系统实现与优化

Unity游戏开发:从基础到进阶的智能追踪导弹系统实现与优化

1. 项目概述:从“打不准”到“躲不掉”的智能追踪在任何一个射击游戏里,让玩家感到“爽快”的,除了精准的枪法,往往还有那些带有智能追踪效果的武器。想象一下,你发射出一枚导弹,它拖着长长的尾焰&#xff…

2026/10/20 1:41:54 阅读更多 →
0基础专升本同学 怎么理解C语言?(上)

0基础专升本同学 怎么理解C语言?(上)

说实话,C语言不简单,我拆书都要专门写两片帖子。 尤其学到数组、函数、指针以后,理解难度会明显上升。 不过,我还是想把谭浩强的《C程序设计》带同学们从头梳理了一遍。 C语言到底是什么? 简单来说,C语言就…

2026/10/20 9:29:40 阅读更多 →

最新新闻

YOLOv8嵌入CoTNet:改造C2f结构提升检测精度

YOLOv8嵌入CoTNet:改造C2f结构提升检测精度

大家在做目标检测的时候,针对某个特定场景,直接用原版YOLOv8跑出来的效果往往差口气。比如小目标漏检、遮挡目标框不准,或者背景复杂导致误检。这时候大多数人第一反应是换更大的模型,或者加数据增强,但很少有人会想到…

2026/10/21 2:04:39 阅读更多 →
原神小助手:3 步跑通自动战斗、秘境刷本与大世界采集

原神小助手:3 步跑通自动战斗、秘境刷本与大世界采集

原神小助手:3 步跑通自动战斗、秘境刷本与大世界采集 【免费下载链接】genshin_impact_assistant 原神小助手 Genshin Assistant (CN/EN) | 自动战斗,秘境,领日常,半自动委托 项目地址: https://gitcode.com/GitHub_Trending/ge/genshin_impact_assistant 每天 120 点树…

2026/10/21 2:04:39 阅读更多 →
永磁同步电机全速域无位置传感器控制:高频方波注入与滑模观测器加权切换策略

永磁同步电机全速域无位置传感器控制:高频方波注入与滑模观测器加权切换策略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:04:39 阅读更多 →
广告投放风控防坑必备软件:传播易、朝闻通、拓氪科技

广告投放风控防坑必备软件:传播易、朝闻通、拓氪科技

随着移动互联网营销迈入精细化、合规化、长效化发展阶段,传统粗放式广撒网的广告投放模式已彻底失效。当前,全域资源整合、AI智能内容生产、全链路数据监测、合规风控管控、私域用户长效沉淀,已成为全行业广告主的核心营销刚需。现阶段各类企…

2026/10/21 2:04:39 阅读更多 →
199元DIY开源AI录音卡:集成离线转写、说话人识别与DeepSeek思维导图

199元DIY开源AI录音卡:集成离线转写、说话人识别与DeepSeek思维导图

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:04:39 阅读更多 →
汽车出海车载eSIM选型指南:四类供应商模式与落地避坑

汽车出海车载eSIM选型指南:四类供应商模式与落地避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:03:39 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →