Я хочу создать собственную программу C ++ и использовать ее на Android, и я научился делать это с помощью Android NDK. Я даже создал тестовый плагин (lib * .so), который работал отлично. Но когда я создал плагин, который зависит от первого (имеется в виду другая общая библиотека, созданная с помощью NDK), и использовал его в проекте Unity, он не работал. У меня есть эта ошибка:
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):
Это проблема Unity или есть какая-то процедура, которой я должен следовать, чтобы эта работа работала?
Также вот мой файл создания плагина, хотя я не думаю, что проблема возникла из-за этого (так как он собран без каких-либо ошибок или предупреждений):
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)
Ваш lib*.so
должен быть построен для всех ABI, а не только один. Посмотрите, для какого ABI вы создали свою библиотеку, и убедитесь, что ваше приложение создано для того же ABI.
Существует большой шанс, что у вас нет вашей библиотеки в конечном файле apk. Загляните внутрь apk.
Других решений пока нет …