使用Qt/QML开发Android App时出现stdlib.h文件缺失编译错误
你遇到的这个问题,本质是Qt 5.9.1与Android NDK r16b的兼容性冲突导致的STL头文件缺失,我给你几个针对性的解决办法:
降级NDK到兼容版本
Qt 5.9.x系列对NDK r16b的支持并不理想——从NDK r16开始,Google调整了gnu-libstdc++的默认支持策略,部分版本甚至移除了旧版库文件。建议你换成Qt 5.9.1官方推荐的NDK版本,比如r15c或者r10e,这两个版本和Qt 5.9.x的兼容性非常稳定。解压后在Qt Creator的「工具>选项>设备>Android」里重新指定NDK路径即可。检查项目的STL配置选项
打开你的项目,进入「构建>Android构建设置>Build Android APK>详细信息」,找到「C++标准库」选项,确保选择的是gnu-libstdc++ 4.9。如果选了c++_static或c++_shared,很可能会和Qt默认依赖的STL库冲突,导致头文件找不到。确认SDK/NDK路径配置准确性
检查Qt Creator里的NDK路径是否指向你手动下载的android-ndk-r16b,而不是SDK自动生成的ndk-bundle(SDK Manager下载的ndk-bundle版本可能和你需要的不一致)。另外,确保SDK路径指向的是你解压的sdk-tools-linux-3859397对应的目录,没有层级错误。清理缓存后重新构建
先执行「构建>清理项目」,然后手动删除项目目录下的build文件夹,再重新执行构建操作。有时候旧的构建缓存会残留错误的路径配置,导致编译失败。
内容的提问来源于stack exchange,提问作者ganeshredcobra

