Android Studio 3中C++文件编译正常但编辑器报大量错误求助
我之前也碰到过一模一样的糟心事——编译运行全正常,但写C++代码的时候满屏红标,连<iostream>这种最基础的标准头都提示找不到,每次得跑一遍应用才敢确认代码没问题,太折腾人了。给你几个亲测有效的解决思路:
强制Android Studio重新索引项目
这是最常见的修复手段,大概率是索引文件没同步或者损坏导致的。操作路径:File -> Invalidate Caches...,勾选Invalidate and Restart,等Studio重启后会重新构建项目索引,很多时候红标直接就消失了。对齐NDK版本配置
一定要确保Android Studio全局使用的NDK,和你项目Gradle、CMake里配置的版本完全一致:- 打开
File -> Project Structure -> SDK Location,查看NDK location对应的版本号; - 检查模块下的
build.gradle里的ndkVersion配置,比如:android { ndkVersion "25.1.8937393" // 要和SDK Location里的NDK版本完全匹配 } - 如果CMakeLists.txt里手动指定了NDK路径,也要保证和上面的版本对应。
- 打开
明确CMake的C++标准配置
有时候编辑器识别不到标准库,是因为CMake没明确指定C++版本。在你的CMakeLists.txt里加上:set(CMAKE_CXX_STANDARD 17) // 根据你的项目需求选11/14/17等版本 set(CMAKE_CXX_STANDARD_REQUIRED ON)然后点击右上角的
Sync Project with Gradle Files按钮同步配置。检查Native模块的依赖配置
打开File -> Project Structure -> Modules,选中你的Native模块,切换到Dependencies标签,确认NDK依赖已经正确添加,并且版本是你当前使用的那一个。手动添加NDK标准头路径(极端情况)
如果上面的方法都没用,可以尝试在CMakeLists.txt里手动指定NDK的标准头路径:include_directories(${ANDROID_NDK}/sources/cxx-stl/llvm-libc++/include) include_directories(${ANDROID_NDK}/sysroot/usr/include)不过这步尽量最后用,正常情况下Studio应该能自动识别这些路径,手动加是兜底方案。
我当时是靠重新索引+对齐NDK版本解决的,你按顺序试下来应该能搞定编辑器里的红标问题!
内容的提问来源于stack exchange,提问作者ammcom

