Проблемы с плагином Unity3d для Android

Я получаю исключение DllNotFoundException при попытке получить доступ к моей общей библиотеке из проигрывателя Unity Android. Я поместил файл.so в папку Assets->Plugins->Android, о котором мне рассказала статья ЗДЕСЬ. Я запустил adb logcat и посмотрел логи, и вот фрагмент ошибки:

E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
D/dalvikvm(27320): Trying to load lib /data/data/com.pheenixstudios.tankraigearena/lib/libwinsocklib.so 0x419ccfd0
E/Unity   (27320): Unable to find winsocklib
D/dalvikvm(27320): Trying to load lib /data/data/com.pheenixstudios.tankraigearena/lib/libwinsocklib.so 0x419ccfd0
E/Unity   (27320): Unable to find winsocklib
D/dalvikvm(27320): Trying to load lib /data/data/com.pheenixstudios.tankraigearena/lib/libwinsocklib.so 0x419ccfd0
E/Unity   (27320): Unable to find winsocklib
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
E/        (  532): inv_get_mag_rate
I/Unity   (27320): DllNotFoundException: winsocklib
I/Unity   (27320):   at (wrapper managed-to-native) NetworkFunctions:dllInit ()
I/Unity   (27320):   at AndroidNetworkController.Start () [0x00000] in <filename unknown>:0

Я распаковал встроенный APK и файл winsocklib.so находится в папке lib\armeabi-v7a. это правильно написано. Я даже попытался добавить lib к имени файла безрезультатно.

Вот код C# только для дополнительного контекста:

[DllImport("winsocklib", CallingConvention = CallingConvention.Cdecl, EntryPoint = "dllInit")]
public static extern Double dllInit();

Я также упростил это до:

[DllImport("winsocklib")]
public static extern Double dllInit();

Кроме того, я сделал копию и поместил ее в Assets-> Plugins. Я также попытался переименовать оба в libwinsocklib без изменения кода C#. Все еще то же исключение.

У кого-нибудь есть какие-либо идеи? Кто-нибудь может пролить свет на ситуацию?

1 ответ

Решение

Разобрался с проблемой. Я использовал сборку lib с Linux ABI, а не Android ABI. Библиотека сейчас работает.

Другие вопросы по тегам