2016-07-19 20 views
0

Ich möchte ein natives C++ - Programm erstellen und es unter Android verwenden, und ich habe das mit dem Android NDK gelernt. Ich habe sogar ein Test-Plugin (lib * .so) erstellt, das perfekt funktioniert. Aber als ich ein Plugin erstellt habe, das von dem ersten abhängt (was eine andere mit dem NDK erstellte gemeinsame Bibliothek bedeutet) und es in einem Unity-Projekt verwendet habe, hat es nicht funktioniert. Ich habe diesen Fehler habe:Fehler bei der Verwendung einer NDK-basierten Bibliothek, die von einem anderen in einem Unity-Projekt abhängt

E/Unity (4719): Unable to find MyLib 
I/Unity (4719): DllNotFoundException: MyLib 
I/Unity (4719): at (wrapper managed-to-native) TestDLLScript:Foo() 
I/Unity (4719): at TestDLLScript.Start() [0x00000] in <filename unknown>:0 
I/Unity (4719): 
I/Unity (4719): (Filename: Line: -1) 
I/Unity (4719): 

Ist das ein Problem von Unity oder gibt es einige Verfahren, die ich brauche zu folgen, diese Arbeit zu machen?

Auch hier ist mein Plugin Make-Datei, obwohl ich nicht glaube, dass das Problem von ihm kam (da er ohne Fehler oder Warnung gebaut):

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 
LOCAL_MODULE := TestDLL 
LOCAL_SRC_FILES := libs/$(TARGET_ARCH_ABI)/libTestDLL.so 
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/source 
include $(PREBUILT_SHARED_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := MyLib 
LOCAL_SRC_FILES += MyLibrary.cpp 
LOCAL_SHARED_LIBRARIES += TestDLL 
include $(BUILD_SHARED_LIBRARY) 

Antwort

0

Ihr lib*.so muss für alle gebaut werden ABIs, nicht nur eins. Sehen Sie sich also an, für welche ABI Sie Ihre Bibliothek erstellt haben, und stellen Sie sicher, dass Ihre Anwendung für denselben ABI erstellt wurde.

Es besteht eine große Chance, dass Sie keine Bibliothek in der endgültigen apk-Datei haben. Werfen Sie einen Blick in apk.

+0

Meine Bibliothek ist für armeabi-v7a und x86, die zwei ABIs, die Unity unterstützt, gebaut. Und meine zwei Bibliotheken sind in der letzten apk im Ordner "libs". –