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 関数です。なぜ失敗するのか理解できません...
誰でも理解するのを手伝ってもらえますか? 前もって感謝します