【问题标题】:exception "error: expected ';' after top level declarator" from ndk-build异常“错误:预期';'在 ndk-build 的顶级声明符之后
【发布时间】:2018-11-02 09:16:03
【问题描述】:

操作系统:macOS 10.13.3 IDE:安卓工作室 1.5.1 g++:4.2.1

场景: 我想使用 c++ 使用 NDK 进行开发。当我定义要构建的 c++ 类时,Gradle 控制台返回如下错误:

> src/main/jni/addcomputer.c:23:12: error: expected ';' after top level declarator
jclass Test{
           ^
           ;
1 error generated.
make: *** [build/intermediates/ndk/obj/local/arm64-v8a/objs/addcomputer/addcomputer.o] Error 1
:app:ndkBuild FAILED

我的 .cpp 如下所示:

#include "com_BTC_ui_JNI.h"
//......
JNIEXPORT jstring JNICALL
Java_com_BTC_ui_JNI_getString(JNIEnv *env, jobject instance)
{
 return (*env)->NewStringUTF(env, "mytest-sample-x");
}

JNIEXPORT jint JNICALL
Java_com_BTC_ui_JNI_plus(JNIEnv *env, jobject instance, jint a, jint b)
{
 return a+b;
}

jclass Test{//this is where the error occur
    private:
        jint mytest;
};

当我打开一个终端来构建一个包含类定义的 .cpp 文件时,它返回相同的错误。我找不到原因。有人可以帮助我吗?

【问题讨论】:

  • 你的意思是class Test
  • 是的。只是一个测试。我定义它是为了测试。
  • 错误消息显示“addcomputer.c”,但您提到了“.cpp”文件。会不会是你编译为 C 而不是 C++?
  • jclass 是指针类型。 jclass Test { private: jint mytest; }; 毫无意义。

标签: c++ android-ndk


【解决方案1】:

错误消失了,我只是修复了一些基本问题。虽然编译过程正常,但运行时出现另一个错误找不到本地方法的实现。我猜是编译器引起的。现在我应该关闭这个问题.感谢大家关注这个问题。

【讨论】:

    猜你喜欢
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多