JNI调用在非静态方法上失败

时间:2012-06-01 09:44:26

标签: android android-ndk java-native-interface

我正在尝试使用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函数。 我无法理解它失败的原因......

任何人都可以帮助我理解吗? 提前致谢

0 个答案:

没有答案