android ndk UnsatisfiedLinkError cuando se usa una biblioteca compartida preconstruida
Estoy intentando crear una biblioteca compartida que se vincule con otra biblioteca compartida.
Aquí está mi módulo principal 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)
También tengo la biblioteca compartida preconstruida en el directorio ./lib con su propio archivo 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)
l archivo fuente SightCore-jni.cpp es la interfaz jni de la biblioteca compartida y se carga con el comando
System.loadLibrary("SightCore-jni");
Durante el proceso ndk-build obtengono compilación o vinculación errores. Cuando intento ejecutar la aplicación y acceder a uno de los métodos nativos, obtengo UnsatsfiedLinkError. Noté que si deshabilito las referencias a SightAPI en mi código jni y pongo un error tipográfico en LOCAL_STATIC_LIBRARIES: = línea SightAPI, la compilación es exitosa y no hay UnsatisfiedLinkError.
Esto significa que el código jni que tengo es bueno (estoy realmente seguro de que está bien ...)
Así que la observación es la siguiente:
Si compilo la biblioteca compartidacon el precompilado biblioteca compartida me sale un corrupto .so archivo.
Si compilo el mismo proyecto ndksin vinculación a la @ precompila biblioteca compartida hayNo hay problem cargando la biblioteca compartida desde Java.
Por favor, ayúdame si puedes.
Gracias por adelantado
Ita