Para llamar a un metodo de instancia de
la clase, siga los 3 siguientes pasos.
Llame a la funcion GetObjectClass(), que devuelve un objeto clase que corresponde al tipo del objeto de Java.
Llame a GetMethodID() para obtener en una variable ID un indicador del metodo requerido
Por ultimo, use el indicador de metodo para llamar al metodo con la funcion CallVoidMethod() (o la que corresponda segun el tipo a devolver)
JNIEXPORT
void JNICALL
Java_Callbacks_nativeMethod(JNIEnv
*env, jobject obj, jint depth)
{
jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID mid = (*env)->GetMethodID(env, cls, "callback",
"(I)V");
if (mid == 0) {
return;
}
printf("In C, depth = %d, about to enter Java\n", depth);
(*env)->CallVoidMethod(env, obj, mid, depth);
printf("In C, depth = %d, back from Java\n", depth);
}
Ejemplos: