我想在Android中使用手动编译的OpenAL共享库。Android NDK:使用OpenAL共享库时出现UnsatisfiedLinkError
include $(CLEAR_VARS)
LOCAL_MODULE:=openal
LOCAL_SRC_FILES:=../mylibs/libopenal.so
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)/include/AL
include $(PREBUILT_SHARED_LIBRARY)
在mylibs文件夹中,我有3个文件:
lrwxr-xr-x 21:12 libopenal.so -> libopenal.so.1
lrwxr-xr-x 21:12 libopenal.so.1 -> libopenal.so.1.13.0
-rwxr-xr-x 22:33 libopenal.so.1.13.0
符合一切正常,但在运行时我得到这个错误:
E/AndroidRuntime(13604): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1848]: 1296 could not load needed library 'libopenal.so.1' for 'libopenaltest.so' (load_library[1120]: Library 'libopenal.so.1' not found)
E/AndroidRuntime(13604): at java.lang.Runtime.loadLibrary(Runtime.java:370)
E/AndroidRuntime(13604): at java.lang.System.loadLibrary(System.java:535)
E/AndroidRuntime(13604): at com.hz.openal.OpenActivity.<clinit>(OpenActivity.java:10)
E/AndroidRuntime(13604): ... 15 more
谁能帮我解决这个问题?
你的.so文件的数字版本后缀强烈建议这些不是为android构建的库,因为通常的android构建系统不会以这种方式进行版本控制。很可能你正在尝试使用为你的开发机器或其他非android目标构建的库,而这只是简单的不起作用。您可以(在某种程度上)使用'readelf'命令检查库的体系结构。最有可能的是,你最终不得不用ndk构建系统重新编译这些库,或者至少是android编译器(查看独立工具链) –
即使它们是android兼容对象,sym链接也可能无法通过包装和安装。 –
谢谢,我会尽量重建图书馆。 –