在Unity项目中使用依赖于另一个NDK构建的库时出错

Error when using a NDK built Library which depend on another one in a Unity project

本文关键字:构建 NDK 出错 另一个 依赖于 项目 Unity      更新时间:2023-10-16

我想创建一个本地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,然后确保您的应用程序是为相同的ABI构建的。

在最终的apk文件中,你很有可能没有你的库。看看apk内部。