You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:46:02