我正在尝试为Android重建我的Qt应用程序,所以我选择必需品。但是当我尝试使用openal soft for 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文件)。
答案 0 :(得分:0)
这意味着JNI_OnLoad函数在多个位置定义。一次进入OpenAL Soft的android.c文件,一次进入Qt的qtmain_android.cpp。
JNI_OnLoad是Android在加载时调用每个共享库的特殊函数。显然你不可能有两个。
我建议您将OpenAL和Qt放入单独的共享库中。这样Android就会正确调用两个JNI_OnLoad函数。