我正在尝试在 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 函数。我不明白为什么它会失败......
谁能帮我理解?提前致谢