Я звоню C ++ с Android с JNI , и пока все работает. Теперь мне нужно, чтобы в этой функции C ++ была некоторая функциональность из Java, и попытаюсь перезвонить в Java из C ++. Я проверил различные решения на stackoverflow и других источниках в сети, но я почему-то просто не мог заставить его работать.
Я всегда получаю следующее исключение "W/dalvikvm(358): JNI WARNING: can't call Lcom/main/Main;.message on instance of Lcom/main/Main;
"
Кто-нибудь может дать мне какой-нибудь совет по этому поводу? Я что-то пропустил, что-то наблюдал или у меня просто неправильный код?
Вот часть Java, которую я хочу вызвать из C ++:
public class Main extends Activity
{
public native String JNIInit();
String message(String text)
{ text = text + "from java";
return text;
}
.
.
}
Это функция C ++ , которую я могу успешно вызвать из Java, но из которой я не могу перезвонить в Java:
extern "C" JNIEXPORT jstring JNICALL Java_com_main_Main_JNIInit(JNIEnv* env, jobject obj)
{ jstring jstr = env->NewStringUTF("From jni");
jclass cls = env->FindClass("com/main/Main");
jmethodID method = env->GetMethodID(cls, "message", "(Ljava/lang/String;)Ljava/lang/String;");
jobject result = env->CallObjectMethod(obj, method, jstr);
return env->NewStringUTF(str);
}
PS: я знаю, что здесь есть несколько тем на эту тему, но я все равно не смог заставить его работать. Там должно быть что-то, что я просто скучаю, и я просто не могу понять, что это такое.