У меня есть следующая настройка - MainActivity с кнопкой, которая запускает SDLActivity (SDL2). На стороне С++ моего проекта SDL у меня есть main.cpp с объявленной собственной функцией:
extern "C" void Java_org_libdsl_app_SDLActivity_nativeSetAcc (JNIEnv* env, jclass clazz, jint Acc);
void Java_org_libdsl_app_SDLActivity_nativeSetAcc (JNIEnv* env, jclass clazz, jint Acc)
{
SDL_Log ("set acc");
// does something with the Acc value
}
Я добавил в SDLActivity.java следующее:
public static native void nativeSetAcc (int Acc);
но я получаю неудовлетворенную ошибку ссылки (java.lang.UnsatisfiedLinkError: собственный метод не найден: org.libsdl.app.SDLActivity.nativeSetAcc:(I)V)
Сторона C/SDL компилируется нормально ("jni.h" также включен). Часть Android работает нормально, пока я не захочу использовать nativeSetAcc;
Странно то, что другие функции JNI из библиотеки SDL действительно работают (nativeQuit, nativeResume и т. д.). И я уверен, что я делаю LoadLibrary ("main") - код внутри main() работает (зацикливание событий SDL и т. д.).
Глядя на шестнадцатеричный дамп libmain.so, я вижу строку Java_org_libdsl_app_SDLActivity_nativeSetAcc.
Пожалуйста помоги! Конечно, я пропускаю что-то маленькое, но я не вижу.
extern "C" JNIEXPORT void JNICALL Java_org_libdsl_app_SDLActivity_nativeSetAcc (JNIEnv* env, jclass clazz, jint Acc);
иvoid JNICALL Java_org_libdsl_app_SDLActivity_nativeSetAcc (JNIEnv* env, jclass clazz, jint Acc)
? - person Michael   schedule 25.01.2015