android - unity : DllNotFoundException (Unity 2018. 2;安卓)

标签 android c++ unity3d shared-libraries native

我有一个 Android native 库(C++ 代码库),名为:

libserverapp.so

而且我无法让 Android 版本找到它:

“DllNotFoundException:服务器应用程序”

我正在使用内部构建系统,但是当我解析构建过程的输出时,我可以看到许多调用形式:

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 的导入设置是:

平台:安卓;中央处理器:ARMv7;路径:Assets/Plugins/Android/libserverapp.so;类型:原生

考虑到最终的 APK 在我期望的位置包含 .so (lib/armeabi-v7a/),我假设我的 Unity 设置是正确的?此外,我没有将 IL2CPP 用于 Android 构建。

最后,当我对库文件进行对象转储时(使用 arm-linux-androideabi-objdump.exe),库文件的文件格式为“elf32-littlearm”。

我觉得这里的问题只是找到 .so,而不是其中的功能。对这里发生的事情有什么想法吗?

谢谢!

最佳答案

我最终解决了这个问题。我提到那是使用内部构建系统。好吧,它似乎有一个错误。我将事情移植到官方 Android NDK 生成文件,然后它“正常工作”。因此在这种情况下,可以找到该库,但其内容无效。

关于android - unity : DllNotFoundException (Unity 2018. 2;安卓),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046144/

相关文章:

java - Android 启动时出错

c++ - 如何在 C++ 中编写整数和平凡类型之间的双向映射?

c++ - Windows 7基本主题上的MFC控件隐藏

c# - 文件存在于编辑器中但在 android 导出中找不到?

unity3d - UCE0001 : ';' expected. Insert a semicolon at the end

javascript - 使用 phonegap 发送短信

android - 如何启用 Genymotion 模拟器以使用主机正在使用的 WIFI 互联网

java - 对 Bitmap 中的像素值感到困惑(使用 setPixel 预乘颜色)

c++ - 重载函数调用编译时常量

c# - unity填充量lerp返回错误值