У меня есть собственная библиотека Android (кодовая база C ++), которая называется:
libserverapp.so
И я не могу получить сборку Android, чтобы найти его:
"DllNotFoundException: serverapp"
Я использую внутреннюю систему сборки, но когда я анализирую выходные данные процесса сборки, я вижу много вызовов вида:
android-ndk / toolchains / arm-linux-androideabi-4.6 / готовый / windows / bin / arm-linux-androideabi-g ++. Exe -march = armv7-a
После создания приложения для Android я проверяю полученный APK (переименовываем в .zip и распаковываю) и вижу мой библиотечный файл здесь:
Библиотека / armeabi-v7a / libserverapp.so
Я могу подтвердить, что "ARMv7" является целевой архитектурой в настройках проигрывателя Android, и я получаю доступ к библиотеке в C # с помощью:
[DllImport("serverapp", CallingConvention = CallingConvention.Cdecl)]
private static extern void run_sim(StringBuilder matchInput, StringBuilder results, int randomSeed);
Я создал Windows DLL из кода C ++ для использования в редакторе, и все отлично работает. Однако, когда я перехожу на Android, .so не может быть найден. Параметры импорта для libserverapp.so:
Платформа: Android; Процессор: ARMv7; Путь: ресурсы / плагины / Android / libserverapp.so; Тип: родной
Учитывая, что в окончательный APK входит. Кроме того, я не использую IL2CPP для сборки Android.
Наконец, когда я делаю объектный дамп файла библиотеки (используя arm-linux-androideabi-objdump.exe), формат файла библиотеки - "elf32-littlearm".
Я чувствую, что проблема в том, чтобы просто найти .so, а не его функциональность. Есть идеи о том, что здесь происходит?
Спасибо!