SDL2, JNI и UnsatisfiedLinkError

У меня есть следующая настройка - 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.

Пожалуйста помоги! Конечно, я пропускаю что-то маленькое, но я не вижу.


person A69    schedule 25.01.2015    source источник
comment
Разве это не должно быть 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
comment
Нет, пробовал. То же самое. Тем не менее, спасибо за ваши усилия. Кстати, мне просто нужно каким-то образом передать целое число из MainActivity на сторону main.cpp. Вышеприведенный способ (нативные/JNI-функции) работает, я использую его в других проектах, но здесь SDL как-то лажает. Я бы получил и другие предложения.   -  person A69    schedule 25.01.2015


Ответы (1)


Ладно, ребята, я тупой. Вместо libsdl я использовал в коде libdsl. Очень рекомендуется немного поспать в воскресенье

person A69    schedule 25.01.2015