android ndk UnsatisfiedLinkError при использовании предварительно созданной общей библиотеки

Я пытаюсь создать общую библиотеку, которая ссылается на другую общую библиотеку.

Вот мой основной модуль Android.mk:

TOP_LOCAL_PATH := $(call my-dir)
include $(call all-subdir-makefiles)

LOCAL_PATH := $(TOP_LOCAL_PATH)

include $(CLEAR_VARS)

LOCAL_CPP_EXTENSION := cpp


LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/ $(LOCAL_PATH)/lib/include
LOCAL_MODULE    := SightCore-jni
LOCAL_SRC_FILES := SightDemo.cpp SightCore-jni.cpp
LOCAL_SHARED_LIBRARIES := SightAPI
LOCAL_LDLIBS = -llog 

include $(BUILD_SHARED_LIBRARY)

У меня также есть готовая общая библиотека в каталоге ./lib с собственным файлом Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := SightAPI
LOCAL_SRC_FILES := libSightAPI.so
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include

include $(PREBUILT_SHARED_LIBRARY)

Исходный файл SightCore-jni.cpp - это интерфейс jni в общую библиотеку и загружается с помощью команды

System.loadLibrary("SightCore-jni");  

. В процессе ndk-build я не получаю ошибок компиляции или компоновки . Когда я пытаюсь запустить приложение и получить доступ к одному из собственных методов, я получаю ошибку UnsatsfiedLinkError. Я заметил, что если отключить ссылки на SightAPI в моем коде jni и поставить опечатку в строке LOCAL_STATIC_LIBRARIES: = SightAPI, сборка будет успешной, и нет ошибки UnsatisfiedLinkError .
Это означает, что код jni, который у меня есть, хорош (я действительно уверен, что он в порядке ...)

Итак, наблюдение выглядит следующим образом:
Если я скомпилирую общую библиотеку с предварительно созданным ] разделяемая библиотека. Я получаю поврежденный .so файл.

Если я скомпилирую тот же проект ndk без ссылки на предварительно созданную разделяемую библиотеку, не возникнет проблем при загрузке разделяемой библиотеки со стороны java.

Пожалуйста, помогите мне, если сможете.

Заранее спасибо,

Ita

12
задан Ita 14 March 2011 в 14:32
поделиться