完了したら:
jmethodID mid = (*env)->GetMethodID(env, cls, "run", "()V");
関数ポインタを引数としてC関数に渡すことができるように、実行アドレスを取得するにはどうすればよいですか?おそらくいくつかのjmethodID
分野?jniドキュメントでそれを見つけることができませんでした。ありがとう。
完了したら:
jmethodID mid = (*env)->GetMethodID(env, cls, "run", "()V");
関数ポインタを引数としてC関数に渡すことができるように、実行アドレスを取得するにはどうすればよいですか?おそらくいくつかのjmethodID
分野?jniドキュメントでそれを見つけることができませんでした。ありがとう。
C /C++で入力されたメソッドは次のようになります。
#include "MyTest.h"
JNIEXPORT void JNICALL
Java_InstanceMethodCall_nativeMethod(JNIEnv *env, jobject obj)
{
jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID mid = (*env)->GetMethodID(env, cls, "run", "()V");
(*env)->CallVoidMethod(env, obj, mid);
}
署名はjavahを使用して生成されます。
できません。APIのCallXXXMethod()ファミリーを使用する必要があります。それが彼らの目的です。関数ポインタが必要なコードを妨害できない場合は、Cでコールバックを自分で記述し、CallXXXMethod()自体を呼び出して、ジョブジェクトとmethodIDをなんらかの方法で保存する必要があります。