2012-12-01 3 views
2

Android에서 수동으로 컴파일 된 OpenAL 공유 라이브러리를 사용하려고합니다.Android NDK : OpenAL 공유 라이브러리를 사용할 때 UnsatisfiedLinkError

mylibs 폴더에서
include $(CLEAR_VARS) 
LOCAL_MODULE:=openal 
LOCAL_SRC_FILES:=../mylibs/libopenal.so 
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)/include/AL 
include $(PREBUILT_SHARED_LIBRARY) 

나는 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 

사람이이 문제를 도와 줄 수 있습니까?

+1

.so 파일의 숫자 버전 접미사는 일반적으로 안드로이드 빌드 시스템이 그런 식으로 버전을 지정하지 않으므로 android 용으로 빌드 된 라이브러리가 아님을 강력하게 제안합니다. 대부분의 경우 개발 기계 또는 기타 안드로이드 타깃을 위해 구축 된 라이브러리를 사용하려고 시도하고 있으며 이는 작동하지 않을 것입니다. 'readelf'명령으로 라이브러리 아키텍처를 (어느 정도) 점검 할 수 있습니다. 대부분의 경우 ndk 빌드 시스템 또는 최소한 안드로이드 컴파일러 (독립 실행 형 툴체인)를 사용하여 라이브러리를 다시 빌드해야합니다. –

+0

android 호환 객체 인 경우에도 sym 링크가 포장 및 설치. –

+0

고마워, 나는 도서관을 재건하려고 노력할 것이다. –

답변

1

..... 난 당신이 마지막 줄 LOCAL_SHARED_LIBRARIES 누락 생각이

LOCAL_MODULE := lib3rdparty-prebuilt 
LOCAL_SRC_FILES := lib3rdparty.so 
include $(PREBUILT_SHARED_LIBRARY) 

LOCAL_SHARED_LIBRARIES += lib3rdparty-prebuilt 

처럼

을 시도하고 또한 라이브러리 "libopenal.so"로드하기 전에로드되지 않았다 " libopenaltest.so "라이브러리. 모든 라이브러리는 종속 라이브러리가로드되기 전에 System.loadLibrary()를 사용하여로드해야합니다.

+0

감사합니다. LOCAL_SHARED_LIBRARIES을 확인했는데 괜찮습니다. "libopenal.so"(System.loadLibrary ("openal");)을로드했지만 동일한 오류가 발생합니다. –