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 は public static void 関数であり、foo2 は public void 関数です。なぜ失敗するのか理解できません...

誰でも理解するのを手伝ってもらえますか? 前もって感謝します

4

0 に答える 0