Android NDK中引入<array>头文件提示找不到的问题排查
问题原因及解决方案
核心原因
gl.c是C语言源文件,编译器会以C语言模式编译它,但<array>是C++标准库的头文件,C语言标准库中不存在这个头文件,因此编译时会提示找不到。
你的CMake和build.gradle配置(C17标准、c++_shared STL)只对C后缀的文件生效,不会改变C语言文件的编译规则。
解决方案
可以通过以下任意一种方式解决:
- 修改文件后缀:将
gl.c重命名为gl.cpp(或.cxx、.cc等C后缀),编译器会自动以C模式编译该文件,就能正常识别<array>头文件。 - 强制指定编译语言:如果不想修改文件名,在CMakeLists.txt中添加以下代码,强制将
gl.c按C++编译:set_source_files_properties(gl.c PROPERTIES LANGUAGE CXX)
内容的提问来源于stack exchange,提问作者k0ala Xing
相关产品推荐
相关产品推荐

