1

我正在尝试在 Android 项目上使用 JNI 从 C++ 调用非静态 java 方法,但 GetMethodID 始终返回 NULL。

这是我的代码:

void Java_com_kungfu_rabbit_KungFuRabbitActivity_nativeOnCreate(JNIEnv *env, jobject obj)
{
    // this code works fine
    jclass cls = env->FindClass("com/kungfu/rabbit/KungFuRabbitActivity");
    jmethodID mid = env->GetStaticMethodID(cls, "foo", "()V");
    env->CallStaticVoidMethod(cls, mid);

    // this one fails:
    jclass cls = env->GetObjectClass(obj);
    jmethodID mid = env->GetMethodID(cls, "foo2", "()V");
    env->CallVoidMethod(obj, mid);
}

我从扩展 Activity 的类中调用这个本机函数。foo 是一个公共静态 void 函数,而 foo2 是一个公共 void 函数。我不明白为什么它会失败......

谁能帮我理解?提前致谢

4

0 回答 0