我有一个Android本机库(C ++代码库),名为:
libserverapp.so
我无法通过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
我可以在Android Player设置中确认“ 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用于Android版本。
最后,当我执行库文件的对象转储时(使用arm-linux-androideabi-objdump.exe),库文件的文件格式为“ elf32-littlearm”。
我觉得这里的问题是简单地找到.so,而不是其中的功能。对这里发生的事情有任何想法吗?
谢谢!
答案 0 :(得分:2)
我最终解决了这个问题。我提到那是使用内部构建系统。好吧,似乎有一个错误。我将内容移植到了官方的Android NDK makefile中,然后“正常工作”。因此,在这种情况下,可以找到该库,但是其内容无效。