Unity: DllNotFoundException(Unity 2018.2;Android)。 统一:DllNotFoundException是什么意思?(统一2018.2;安卓)

3

我有一个名为libserverapp.so的Android本地库(C++代码库),但是我无法让Android构建系统找到它,会提示"DllNotFoundException: serverapp"。我使用的是内部构建系统,但是当我解析构建过程的输出时,可以看到很多这样的调用:

android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-g++.exe -march=armv7-a

构建Android应用程序后,我检查生成的APK文件(将其重命名为.zip并提取),可以在此处看到我的库文件:

lib/armeabi-v7a/libserverapp.so

我可以确认"ARMv7"是Android Player设置的目标架构,并且我通过以下方式在C#中访问该库:

[DllImport("serverapp", CallingConvention = CallingConvention.Cdecl)]
private static extern void run_sim(StringBuilder matchInput, StringBuilder results, int randomSeed);

我已经构建了一个 C++ 代码的 Windows DLL,用于在编辑器中使用,一切正常。但是当我转移到 Android 平台时,无法找到 .so 文件。libserverapp.so 的导入设置如下:
平台:Android;CPU:ARMv7;路径:Assets/Plugins/Android/libserverapp.so;类型:本地文件。
由于最终的 APK 包含了我期望的 .so 文件(lib/armeabi-v7a/),我认为我的 Unity 设置是正确的。此外,我没有在 Android 构建中使用 IL2CPP。
最后,当我对库文件进行对象转储(使用 arm-linux-androideabi-objdump.exe)时,库文件的文件格式为 "elf32-littlearm"。
我觉得这里的问题只是找不到 .so 文件,而不是其中的功能。您对此有什么想法吗?
谢谢!

跨站重复?https://gamedev.stackexchange.com/questions/6590/unity-plugin-dllnotfoundexception - πάντα ῥεῖ
1个回答

2

我最终解决了这个问题。我提到我正在使用内部构建系统。嗯,似乎有一个错误。我将事情移植到官方的Android NDK makefiles上,然后它“就可以工作了”。所以在这种情况下,库可以被找到,但其内容无效。


1
什么是官方的Android NDK make文件?我在哪里可以找到它们? - Ali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接