我有一个安卓本机库(C++代码库),名为:
libserverapp.so
我找不到Android版本来找到它:
"DllNotFoundException:服务器应用程序“
我使用的是内部构建系统,但是当我解析构建过程的输出时,我可以看到许多形式的调用:
android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-g++.exe -march=armv7-a
在构建我的安卓应用程序之后,我检查了生成的APK (重命名为.zip并解压缩),可以在这里看到我的库文件:
lib/armeabi-v7a/libserverapp.so
我可以确认"ARMv7“是安卓播放器设置中的目标架构,并且我可以通过以下方式访问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设置是正确的?另外,我没有使用IL2CPP来构建安卓系统。
最后,当我对库文件进行对象转储时(使用arm-linux-androideabi-objdump.exe),库文件的文件格式是"elf32-littlearm“。
我觉得这里的问题仅仅是找到.so,而不是它里面的功能。你知道这是怎么回事吗?
谢谢!
发布于 2018-08-29 05:14:58
我最终解决了这个问题。我提到的是使用内部构建系统。好吧,这里面似乎有个bug。我将其移植到官方的Android NDK makefile中,然后它就“正常工作”了。因此,在这种情况下,可以找到库,但其内容无效。
https://stackoverflow.com/questions/52046144
复制相似问题