Java で記述された IntentService からネイティブ コールバック メソッドを呼び出そうとしています。IntentService のコード スニペットは次のようになります -
private static native void native_notificationCallback();
public void somemethod(){
//some other code...
native_notificationCallback();
}
もう一人は別のクラスにいます -
private static native void native_initCallback();
public void somemethod(){
//some other code...
native_initCallback();
}
inteface.cpp は次のようなものです -
void JNICALL Notification_initCallback(JNIEnv* env, jobject obj)
{
//code
}
void JNICALL Notification_notificationCallback(JNIEnv* env, jobject obj)
{
//code
}
void init(){
static const JNINativeMethod methods[] =
{
{"native_initCallback","()V",(void*)&Notification_initCallback},
{"native_notificationCallback","()V",(void*)&Notification_notificationCallback}
};
// Register the native hooks
if (env->RegisterNatives(cls, methods,sizeof(methods)/sizeof(methods[0])))
goto fail;
}
問題は、私がそれを呼び出すnative_initCallback
と完璧に動作することですがnative_notificationCallback
、アプリを呼び出すとjava.lang.UnsatisfiedLinkError
. どちらも名前を除いてほとんど同じであるため、最初の方法で機能し、2番目の方法で機能しなかった理由がわかりません。