JNI/NDK でコールバック関数を実装しようとしています。GetMethodID 関数でエラーが発生しました
次の署名を持つ Java (C から) で関数を実行したい:
【Javaコード】
public int callback(String msg) {
cb_tv.setText(msg);
return 1;
}
[ネイティブ C コード]
JNIEXPORT void JNICALL Java_com_example_hellojni1_nativeJava_testDirectCallback(JNIEnv *env, jclass obj) {
static jmethodID cb = NULL;
jclass cls = (*env)->GetObjectClass(env, obj);
if(cb == NULL) {
cb = (*env)->GetMethodID(env, cls, "callback", "(Ljava/lang/String;)I");
if(cb == NULL) return;
}
(*env)->CallVoidMethod(env, obj, cb, (*env)->NewStringUTF(env, "[C->J] callback"));
return;
}
次のエラーが表示されます。
08-01 16:26:43.617: W/dalvikvm(516): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
08-01 16:26:43.637: E/AndroidRuntime(516): FATAL EXCEPTION: main
08-01 16:26:43.637: E/AndroidRuntime(516): java.lang.NoSuchMethodError: callback
エラーがわかりません。私を助けてくれる人はいますか?前もって感謝します