ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

qt编译器报错:‘MINGW_EXTENSION‘ does not name a type;‘uintptr_t‘ does not name a type;‘size_t‘ was...如何解决?

qt编译器报错:‘MINGW_EXTENSION‘ does not name a type;‘uintptr_t‘ does not name a type;‘size_t‘ was...如何解决? 本文收录于 《全栈 Bug 调优实战版》 专栏。专栏聚焦真实项目中的各类疑难 Bug从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者还是负责复杂项目的资深工程师都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论助你稳步进阶、放大技术价值。特别说明文中问题案例来源于真实生产环境与公开技术社区并结合多位一线资深工程师与架构师的长期实践经验经过人工筛选与AI系统化智能整理后输出。文中的解决方案并非唯一“标准答案”而是兼顾可行性、可复现性与思路启发性的实践参考供你在实际项目中灵活运用与演进。欢迎订阅本专栏一次订阅后专栏内所有文章可永久免费阅读后续更新内容皆不用再次订阅持续更新中。 问题描述详细问题描述如下qt编译器问题怎么解决创建的新的空白文件都报错如何解决本地环境win10wingw1310-64qt6.8.3尝试了比如环境变量问题版本问题之前是6.10.3换成6.8.3一样报错以及选择套件都没有解决问题。如下是实际报错截图全文目录 问题描述 请知悉如下方案不保证一定适配你的问题✅️问题理解✅️问题解决方案方案 A先判断是不是 Qt Creator 代码模型 / Clangd 误报最优先、最可能第 1 步不要先看“问题”先看“编译输出”第 2 步你是 qmake 项目新建文件后一定要加入 .pro第 3 步关闭或重置 Clangd / 代码模型第 4 步头文件不要单独“判死刑”第 5 步重新解析项目方案 B彻底重建 **Kit 配置**如果“编译输出”也真实报错第 1 步检查 Kit 里的三条路径必须匹配同一套 MinGW第 2 步删掉自定义 Kit只保留自动检测出的官方 Kit第 3 步不要只换 Qt 版本要同时清理 build 目录第 4 步在终端里校验真正被调用的是谁第 5 步校验编译器版本方案 C排查 **环境变量 PATH 污染**非常常见你要重点检查这些目录是否在系统 PATH 里排在 Qt 前面最稳妥的处理方式方案 D重置 Qt Creator 配置缓存适用于“怎么配都不对”的情况重置步骤方案 E用一个“最小可验证项目”确认问题范围强烈建议新建一个最小 Widgets 测试项目✅️问题延伸1qmake 项目新文件要手动进 .pro2头文件本来就不是单独编译单位3Qt Creator 的“问题”面板 ≠ 编译器真实错误✅️问题预测预测 1你大概率遇到的是“误报 配置不干净”的复合问题预测 2你项目里新建文件后可能没有同步写入 .pro预测 3你机器里大概率不止一套 C/C 工具链预测 4如果你现在完全重装 Qt但不清缓存、不清 Kit、不清 build问题还会继续预测 5如果你切到 MSVC问题可能会暂时消失✅️小结 结语 互动说明 文末福利技术成长加速包 Who am I? 请知悉如下方案不保证一定适配你的问题如下是针对上述问题进行专业角度剖析答疑不喜勿喷仅供参考✅️问题理解先给你一个明确判断从你这张截图看这个问题大概率不是“你代码写错了”也不是“Qt 本身坏了”而是Qt Creator 代码模型/Kit/项目编译上下文出了问题。如上你的截图里可以得出最关键信号有几个报错位置出现在系统头文件里例如corecrt.hstddef.hcxxabi_init_exception.h正常情况下这些头文件本身不会平白无故坏掉。一旦这里爆出成片错误通常说明不是某一行业务代码错了而是解析这些头文件时编译器上下文不对。典型报错是_MINGW_EXTENSION does not name a typesize_t does not name a typeuintptr_t does not name a type这类报错很有代表性它通常意味着MinGW 相关宏、类型定义、系统头文件包含链没有被正确识别。说白了就是Qt Creator 当前“理解你代码”的方式和真正应该使用的 MinGW/C 编译环境不一致。“新的空白文件都报错”这个现象非常关键这类现象往往不是“文件内容有问题”因为你都还没写内容。它更像下面几类问题之一Qt Creator 的 Clangd / 代码模型误报新文件没有加入.pro所以没有正确的编译上下文Kit 绑定错了编译器、调试器、qmake切换 Qt 版本后没有清理旧 build 目录 / 缓存系统 PATH 里混入了别的 MinGW / MSYS2 / LLVM / VS 工具链导致 Creator 识别错环境先问你一个最关键的确认问题 ❗你现在点击左下角“构建/编译”后编译输出里也会报这些错吗还是只有“问题”面板 / 编辑器红线在报这一步非常重要因为它决定你到底是A. 真编译失败B. 只是 Qt Creator 误报但实际能编译运行从你的截图判断更像 B代码模型/Clangd 误报但我下面会把两种情况都给你彻底讲透。✅️问题解决方案方案 A先判断是不是 Qt Creator 代码模型 / Clangd 误报最优先、最可能这是我认为你当前最大概率的原因。因为你的截图更像是“问题”面板里几千条错误错误集中在系统头文件用户代码还没怎么写也红换 Qt 版本也一样这几条叠加起来非常像编辑器误报而不是实际编译器坏了。第 1 步不要先看“问题”先看“编译输出”你现在立刻做这个动作点击左下角锤子/构建打开底部的“编译输出”看里面是否真的出现这些_MINGW_EXTENSION does not name a typesize_t does not name a type如果编译输出没有这些错误程序还能构建成功那就可以基本下结论你的真正编译器没坏是 Qt Creator 的代码模型/Clangd 在误报。这类情况特别常见很多人会被“问题”面板误导以为整个编译器炸了。第 2 步你是 qmake 项目新建文件后一定要加入.pro你截图里项目是pushbutton.pro这说明你现在用的是qmake 项目不是 CMake。那么新建.cpp/.h文件之后必须把它们加入.pro否则 Qt Creator 对这些文件的编译上下文可能是不完整的。例如你的.pro应该像这样QT core gui widgets CONFIG c17 SOURCES \ main.cpp \ mainwindow.cpp \ mynewfile.cpp HEADERS \ mainwindow.h \ mynewfile.h FORMS \ mainwindow.ui然后执行构建 - 运行 qmake或者右键项目重新解析/重新加载这是很多人最容易漏的一步。“空白文件一创建就报错”在 qmake 项目里很多时候就是因为文件虽然创建了但没有加入工程的SOURCES/HEADERS。第 3 步关闭或重置 Clangd / 代码模型Qt Creator 的智能提示和“问题”面板很多时候不是直接来自真实编译器而是来自Clangd / 代码模型解析器。只要它拿到的参数、宏、include 路径不完整就会在系统头文件里疯狂连锁报错。你可以这样做打开工具 - 选项 - C - Clangd或者工具 - 选项 - C - 代码模型做下面其中一种做法 1直接先关闭 Clangd 试验取消启用 Clangd改用 Qt Creator 内置代码模型应用后重启 Qt Creator做法 2清理 Clangd 索引/缓存如果有“重置索引”“重新解析项目”的按钮执行它然后关闭并重开项目做法 3先只保留最基本功能禁用高级诊断让它只做补全不做强诊断如果你关闭 Clangd 之后红线明显减少甚至消失基本就坐实了不是 MinGW 真坏了是代码模型没有正确拿到 MinGW 的编译上下文。第 4 步头文件不要单独“判死刑”你截图正在打开corecrt.h。这类头文件不是给你单独编译的它们是在特定编译上下文里被其他文件包含进去的。所以要注意两件事头文件本来就不应该单独当编译单元判断如果你新建的是.h文件它本身没有编译命令代码模型有时会误判正确判断方法是看它是否被某个.cpp正常包含看整个工程是否能成功编译也就是说不要因为系统头文件里一堆红线就直接判定 MinGW 坏了。第 5 步重新解析项目你可以按这个顺序做一遍关闭项目关闭 Qt Creator删除项目构建目录例如build-pushbutton-*重新打开项目重新选择 Kit执行运行 qmake再构建一次很多“换版本之后还是错”的根本原因不是新版本也坏而是旧 build 目录没删旧缓存还在Creator 继续沿用旧索引和旧编译参数方案 B彻底重建Kit 配置如果“编译输出”也真实报错如果你在编译输出里也能看到这些系统头文件错误那就不是单纯误报了而是真实工具链配置有问题。这时重点排查Kit 的三件套是否完全一致Qt 版本编译器g调试器gdb第 1 步检查 Kit 里的三条路径必须匹配同一套 MinGW你要去工具 - 选项 - Kits分别看Qt VersionsCompilersDebuggersKits必须尽量保证它们来自同一套安装目录。如果你是 Qt 官方安装器装的 Qt 6.8.3 MinGW 13.1.0那么理想配置通常像这样路径示例Qt VersionC:\Qt\6.8.3\mingw_64\bin\qmake.exeC CompilerC:\Qt\Tools\mingw1310_64\bin\g.exeC CompilerC:\Qt\Tools\mingw1310_64\bin\gcc.exeDebuggerC:\Qt\Tools\mingw1310_64\bin\gdb.exe一定要注意不要 qmake 来自 A 目录g 来自 B 目录gdb 来自 C 目录不要混入 MSYS2 的 gcc不要混入旧版 Qt 的 MinGW不要混入别的 IDE 自带工具链第 2 步删掉自定义 Kit只保留自动检测出的官方 Kit如果你之前切过多个版本、试过很多套件很容易把 Kit 搞乱。建议你直接做这个操作在Kits里把你手动加过的、看起来可疑的 Kit 删除只保留 Qt Creator 自动识别出的Desktop Qt 6.8.3 MinGW 64-bit或类似命名的那套然后项目重新绑定到这套 Kit你这个错误非常像“看起来选了 MinGW实际上某些配置仍指向别的环境”。第 3 步不要只换 Qt 版本要同时清理 build 目录你说你从6.10.3换到6.8.3还是一样。这个现象本身并不能证明“两个版本都坏”更常见的是你换了 Qt 版本但没清理旧的 build 目录旧的 qmake/CMake 配置还残留着Creator 仍在复用旧缓存正确做法关闭 Qt Creator删除项目根目录旁边的所有构建目录例如build-pushbutton-Desktop_Qt_6_8_3_MinGW_64_bit-Release build-pushbutton-Desktop_Qt_6_8_3_MinGW_64_bit-Debug再打开项目重新选择 Kit重新运行 qmake再构建第 4 步在终端里校验真正被调用的是谁打开Windows CMD执行where qmake where g where gcc where gdb where mingw32-make你要看结果是不是都来自Qt 安装目录例如C:\Qt\6.8.3\mingw_64\bin\qmake.exe C:\Qt\Tools\mingw1310_64\bin\g.exe C:\Qt\Tools\mingw1310_64\bin\gcc.exe C:\Qt\Tools\mingw1310_64\bin\gdb.exe C:\Qt\Tools\mingw1310_64\bin\mingw32-make.exe如果这里出现了类似下面这些就要小心C:\msys64\...C:\mingw64\...C:\Program Files\LLVM\...旧版 Qt 的mingw81_64、mingw1120_64等只要混入一套不匹配的工具链Qt Creator 就可能出现你这种“系统头文件连环爆炸”。第 5 步校验编译器版本继续执行g -v qmake -v你重点看g是否真的是 MinGW 13.1.0qmake是否对应 Qt 6.8.3架构是否都是 64-bit如果一个是 32 位、一个是 64 位或者一个来自 Qt 官方、一个来自别的 MinGW就会出问题。方案 C排查环境变量 PATH 污染非常常见很多 Windows 上的 Qt/MinGW 问题不是 Qt 本身的问题而是PATH 被其他软件污染了。常见污染源MSYS2Git 自带 Unix 工具旧版 MinGWLLVM/ClangVS Build Tools其他 C/C IDE你要重点检查这些目录是否在系统 PATH 里排在 Qt 前面打开系统环境变量看Path里有没有这类目录C:\msys64\mingw64\bin C:\msys64\usr\bin C:\MinGW\bin C:\Program Files\LLVM\bin如果这些在前面而 Qt Creator 又继承了系统环境那么 Creator 里的代码模型和工具链很可能“看起来是 Qt 的 MinGW实际混到了别人的头文件/宏/程序”。最稳妥的处理方式你可以这样做暂时把非 Qt 的mingw/msys/llvm相关 PATH 去掉或后移只保留 Qt 这一套C:\Qt\Tools\mingw1310_64\bin C:\Qt\6.8.3\mingw_64\bin重启 Qt Creator重新检测 Compilers/Kits方案 D重置 Qt Creator 配置缓存适用于“怎么配都不对”的情况如果你之前反复试了很多版本、很多 Kit、很多环境变量Creator 的配置缓存本身可能已经乱了。这时建议你做一次真正的重置。重置步骤关闭 Qt Creator备份并删除/改名以下目录Windows常见位置通常类似%APPDATA%\QtProject\qtcreator %LOCALAPPDATA%\QtProject\qtcreator你可以把它们改名为qtcreator_backup重新启动 Qt Creator让它自动重新检测 Qt、编译器、调试器重新打开项目重新选择官方 MinGW Kit这样做的意义是清除旧版 Creator 配置清除旧 Kit 绑定清除代码模型缓存让 Qt Creator 从“干净状态”重新识别环境方案 E用一个“最小可验证项目”确认问题范围强烈建议这个方法很重要因为它能帮你快速判断是你的当前项目坏了还是整个 Qt/MinGW 环境坏了新建一个最小 Widgets 测试项目创建一个全新的 Qt Widgets Application只保留#includeQApplication#includeQPushButtonintmain(intargc,char*argv[]){QApplicationa(argc,argv);QPushButtonbtn(Hello Qt);btn.show();returna.exec();}然后选择官方Qt 6.8.3 MinGW 64-bit运行 qmake构建如果这个最小项目能正常编译运行而你的旧项目不行说明问题更可能在项目配置.pro文件build 目录残留新文件没加到工程里如果最小项目也炸那说明是KitPATHCreator 配置MinGW 安装✅️问题延伸这类问题背后的技术本质其实是“编译上下文错位”。你看到的_MINGW_EXTENSION、size_t、uintptr_t这些标识符本来都应该在正确的系统头文件链和预定义宏环境里被识别出来。正常情况下链路大概是这样的Qt Creator 知道你的源文件属于哪个项目项目知道这个文件用什么 Kit 编译Kit 知道用哪个qmake/g/gdbg知道要使用 MinGW 的头文件和宏MinGW 再去正确地配合 Windows UCRT 头文件size_t、uintptr_t、_MINGW_EXTENSION等宏/类型才会完整可见而你现在的问题本质上是这条链路中某一环断了要么文件没进项目要么项目没正确重建要么 Kit 指错了要么代码模型没拿到正确参数要么 PATH 让 Creator 混用了其他工具链所以表面看起来像“Qt 头文件怎么全坏了”本质上其实是“Qt Creator 正在用错误的上下文解析这些头文件。”再补充一个很多人会忽略的点1qmake 项目新文件要手动进.pro这和 CMake 项目一样新文件不是“建出来就算进工程了”。如果没进工程代码模型就可能把它当成“孤儿文件”。2头文件本来就不是单独编译单位.h文件只有在某个.cpp的编译命令上下文中才是完整的。因此“打开头文件就红”并不总等于“真错”。3Qt Creator 的“问题”面板 ≠ 编译器真实错误很多用户会把“问题面板里的红错”当成真正编译错误。但实际上它可能来自Clangd代码模型静态分析语义检查器所以你一定要区分编译输出问题面板编辑器红线这三者不是一回事。✅️问题预测基于你当前这个现象我给你做几个高概率预测方便你后面避坑预测 1你大概率遇到的是“误报 配置不干净”的复合问题也就是说一部分来自代码模型误报一部分来自之前换版本留下的旧缓存/旧 Kit这也是为什么你换6.10.3到6.8.3还一样。预测 2你项目里新建文件后可能没有同步写入.pro如果你说的是“新建的空白.cpp/.h文件一创建就炸”那这个概率非常高。尤其是 qmake 项目里最常见的链路是文件创建了但没加到SOURCES/HEADERSQt Creator 对它没有正确 compile flagsClangd/代码模型拿不到参数系统头文件开始连环报错预测 3你机器里大概率不止一套 C/C 工具链只要你装过以下任意一个概率就很高MSYS2Dev-CCodeBlocksLLVM/Clang老版 Qt独立 MinGW然后 PATH 里很可能已经掺杂了多个bin目录。预测 4如果你现在完全重装 Qt但不清缓存、不清 Kit、不清 build问题还会继续很多人以为“重装 重置”其实不是。因为真正残留的往往是Creator 配置项目 build 目录代码模型索引PATH 顺序手动添加的自定义 Kit所以你之前“各种办法都试了还是不行”我一点都不意外。预测 5如果你切到 MSVC问题可能会暂时消失这不是因为 MSVC 一定更好而是因为你的当前问题高度集中在MinGW Qt Creator 代码模型/路径上下文换一条工具链相当于绕开了当前损坏链路但这属于绕路不是根治。除非你本来就打算以后长期走 MSVC不然我还是更建议先把当前 MinGW 环境整理干净。✅️小结我帮你直接下一个比较明确的结论 ✅从如上所提供的截图看最可能的根因不是 Qt 版本问题也不是你代码问题而是Qt Creator 代码模型/Clangd 误报qmake 项目中新建文件没有正确加入.proKit 绑定的 qmake / g / gdb 不是完全同一套旧 build 缓存 / Creator 配置 / PATH 混乱所以说你现在最应该按这个顺序处理第一优先级看“编译输出”不要只看“问题”面板判断是不是误报第二优先级3. 新建文件后把它加入.pro4. 运行 qmake5. 删除 build 目录再重新构建第三优先级6. 检查 Kits 里qmake/g/gdb是否来自同一套 Qt 官方 MinGW7. 检查where g/where qmake第四优先级8. 关闭或重置 Clangd9. 必要时重置 Qt Creator 配置目录 结语 互动说明希望以上分析与解决思路能为你当前的问题提供一些有效线索或直接可用的操作路径。若你按文中步骤执行后仍未解决不必焦虑或抱怨这很常见——复杂问题往往由多重因素叠加引起欢迎你将最新报错信息、关键代码片段、环境说明等补充到评论区我会在力所能及的范围内结合大家的反馈一起帮你继续定位 如果你有更优或更通用的解法非常欢迎在评论区分享你的实践经验或改进方案你的这份补充可能正好帮到更多正在被类似问题困扰的同学正所谓「赠人玫瑰手有余香」也算是为技术社区持续注入正向循环 文末福利技术成长加速包 文中部分问题来自本人项目实践部分来自读者反馈与公开社区案例也有少量经由全网社区与智能问答平台整理而来。若你尝试后仍没完全解决问题还请多一点理解、少一点苛责——技术问题本就复杂多变没有任何人能给出对所有场景都 100% 套用的方案。如果你已经找到更适合自己项目现场的做法非常建议你沉淀成文档或教程这不仅是对他人的帮助更是对自己认知的再升级。如果你还在持续查 Bug、找方案可以顺便逛逛我专门整理的 Bug 专栏《全栈 Bug 调优实战版》️这里收录的都是在真实场景中踩过的坑希望能帮你少走弯路节省更多宝贵时间。✍️如果这篇文章对你有一点点帮助欢迎给 bug菌 来个一键三连关注 点赞 收藏你的支持是我持续输出高质量实战内容的最大动力。同时也欢迎关注我的硬核公众号 「猿圈奇妙屋」获取第一时间更新的技术干货、BAT 等互联网公司最新面试真题、4000G 技术 PDF 电子书、简历 / PPT 模板、技术文章 Markdown 模板等资料通通免费领取。你能想到的绝大部分学习资料我都尽量帮你准备齐全剩下的只需要你愿意迈出那一步来拿。 Who am I?我是 bug菌热活跃于 CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等技术社区CSDN 博客之星 Top30、华为云多年度十佳博主/卓越贡献者、掘金多年度人气作者 Top40掘金、InfoQ、51CTO 等平台签约及优质作者全网粉丝累计30w。更多高质量技术内容及成长资料可查看这个合集入口 点击查看 ️硬核技术公众号「猿圈奇妙屋」期待你的加入一起进阶、一起打怪升级。- End -
返回列表