Не удалось связать openal soft с нужным
Я пытаюсь восстановить приложение 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 ответ
Это означает, что функция JNI_OnLoad определена в нескольких местах. Один раз в файле android.c из OpenAL Soft и один раз в qtmain_android.cpp из Qt.
JNI_OnLoad - это специальная функция, которую Android вызывает для каждой разделяемой библиотеки, когда она загружается. Очевидно, что вы не можете иметь два из них.
Я предлагаю вам поместить OpenAL и Qt в отдельные разделяемые библиотеки. Таким образом, Android будет правильно вызывать обе функции JNI_OnLoad.