我正在尝试使用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函数。 我无法理解它失败的原因......
任何人都可以帮助我理解吗? 提前致谢