Не удалось связать openal soft с нужным - PullRequest
1 голос
/ 03 марта 2012

Я пытаюсь перестроить свое приложение Qt для Android, поэтому я выбираю нужные. Но когда я попробовал связать с openal soft для android (который статически собран), возникли ошибки:

/media/Files/QtCode/AndroidPlayer/libs/armeabi/libopenal.a(android.o): In function `JNI_OnLoad':
/media/Files/openal-android/android/jni/../../Alc/backends/android.c:51: multiple definition of `JNI_OnLoad'
qtmain_android.o:qtmain_android.cpp:(.text.JNI_OnLoad+0x0): first defined here
collect2: ld returned 1 exit status

Я не изучал программирование на android или java, поэтому я не знаю, как связать разделяемую библиотеку без файла .a (openal soft shared library предлагает только файл .so).

1 Ответ

0 голосов
/ 03 марта 2012

Это означает, что функция JNI_OnLoad определена в нескольких местах. Один раз в файле android.c из OpenAL Soft и один раз в qtmain_android.cpp из Qt.

JNI_OnLoad - это специальная функция, которую Android вызывает для каждой разделяемой библиотеки, когда она загружается. Очевидно, что вы не можете иметь два из них.

Я предлагаю вам поместить OpenAL и Qt в отдельные разделяемые библиотеки. Таким образом, Android будет правильно вызывать обе функции JNI_OnLoad.

...