使用NDK开发C++类时遇expected ';' after top level declarator错误求助
解决NDK开发中C++类定义触发的编译错误
我来帮你拆解这个问题,你这是踩了C/C++文件后缀对应的编译规则坑啦:
错误根源
你的报错文件是src/main/jni/addcomputer.c——.c后缀会让NDK构建系统默认用C语言编译器(gcc)处理它,但你在代码里写了C++的class定义,而C语言根本不支持类语法,这就导致编译器抛出expected ';' after top level declarator的错误。
具体解决步骤
- 重命名源文件:把
addcomputer.c直接改成addcomputer.cpp,这样构建系统会自动调用C编译器(g)处理你的代码,C++类语法就能被正确识别了。 - 同步构建脚本(如果有):如果你的项目里存在
Android.mk文件,找到LOCAL_SRC_FILES这一行,把里面的addcomputer.c改成addcomputer.cpp,确保脚本指向正确的文件。 - 清理后重新构建:在Android Studio里点击
Build -> Clean Project,然后选择Rebuild Project;如果用终端操作,进入项目根目录执行:./gradlew clean ndkBuild
关于终端构建报错的补充
你在终端直接编译时也遇到相同错误,是因为即使你用g命令,只要文件后缀是.c,g会默认按C语言规则编译(除非你手动加-x c++参数强制指定为C++),所以改后缀是最省心的解决方式。
内容的提问来源于stack exchange,提问作者Eilir
相关产品推荐
相关产品推荐

