android ndk UnsatisfiedLinkError, wenn über einen vordefinierten freigegebenen Bibliothek

Ich versuche zu schaffen, eine geteilte Bibliothek, links zu anderen freigegebenen Bibliothek.

Hier ist mein main-Modul 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)

Ich habe auch das vorgefertigte shared library ./lib-Verzeichnis mit der eigenen Android.mk-Datei:

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)

Den SightCore-jni.cpp Quell-Datei ist die jni-Schnittstelle zu der gemeinsam genutzten Bibliothek und geladen wird mit dem Befehl

System.loadLibrary("SightCore-jni");  

Während des ndk-build-Prozess bekomme ich keine Zusammenstellung oder Verknüpfung Fehler.
Wenn ich versuche, führen Sie die Anwendung und Zugriff auf eine der nativen Methoden bekomme ich die UnsatsfiedLinkError.
Ich bemerkte, dass, wenn Sie deaktivieren Sie die Verweise auf die SightAPI in meinem jni-code und setzen Sie einen typo, der LOCAL_STATIC_LIBRARIES := SightAPI Linie, Der build ist erfolgreich und es ist kein UnsatisfiedLinkError.
Dies bedeutet, dass die jni-code, den ich habe, ist gut (ich bin eigentlich sicher, dass es ok ist...)

So die Beobachtung ist wie folgt:
Wenn ich zum Beispiel die "shared library" mit der vordefinierten geteilte Bibliothek, die ich bekommen beschädigt .so Datei.

Wenn ich kompilieren des gleichen ndk Projekt ohne Verknüpfung zu den vordefinierten shared-Bibliothek vorhanden ist kein problem laden der gemeinsam genutzten Bibliothek aus der java-Seite.

Bitte helfen Sie mir, wenn Sie können.

Vielen Dank im Voraus,

Ita

Welche Fehlermeldung siehst du im logcat? Sollte eine Meldung über die UnsatisfiedLinkError exception, wahrscheinlich mit der Ausgabe von dlopen(). Auch, welche Android-version verwenden Sie?
Wie kann ich mein link gemeinsam genutzte Bibliothek auf Android-NDK-Projekt Kann u bitte Erklären Sie mir,

InformationsquelleAutor Ita | 2011-03-14

Schreibe einen Kommentar