Linux环境下Qt 5.x编译Windows软件遇头文件找不到错误求助
解决MinGW交叉编译Qt项目时的头文件找不到错误
这个问题我之前在Linux下交叉编译Windows Qt项目时也碰到过,核心原因是Windows和Linux的路径分隔符不兼容,导致编译器解析头文件路径出错。
问题分析
你看错误提示里的头文件路径:Widget\Inventory\inventoryplusbutton.h,这里用的是Windows风格的反斜杠\。但在Linux环境下的MinGW交叉编译器中,反斜杠会被当成转义字符处理,编译器实际会去寻找WidgetInventory/inventoryplusbutton.h(相当于把反斜杠忽略了),自然找不到你实际存在的文件夹。
解决步骤
从源头修改UI文件的路径引用:
不要直接修改自动生成的ui_inventoryview.h(下次qmake会覆盖这个修改),回到你用Qt Creator设计界面的.ui文件,找到引用InventoryPlusButton的组件,检查它的头文件引用路径,把所有反斜杠\替换成正斜杠/。在.pro文件中添加正确的包含路径:
为了保险起见,在你的Qt项目.pro文件里明确添加头文件所在目录,用Linux风格的正斜杠:INCLUDEPATH += Widget/Inventory这样Qt在生成ui文件时,会自动使用正确的路径格式。
清理并重新编译:
先清理之前的编译残留文件,再重新生成Makefile并编译:make clean qmake make -f Makefile.Release
补充提醒
在Linux环境下做Windows交叉编译时,所有路径都要统一用正斜杠/,避免Windows风格的反斜杠带来的解析问题。你确认文件夹存在,但编译器找不到,就是因为路径分隔符的解析错误导致的。
内容的提问来源于stack exchange,提问作者Guillaume Fargier
相关产品推荐
相关产品推荐

