android - Unity3d 安卓插件问题

标签 android c++ plugins unity3d dllnotfoundexception

我在尝试从 Unity Android 播放器访问我的共享库时收到 DllNotFoundException。我将 .so 文件放在文章 HERE 的 Assets->Plugins->Android 文件夹中告诉我。我运行了 adb logcat 并查看了日志,这里是错误的 fragment :

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里面。我还尝试在不更改 C# 代码的情况下将两者重命名为 libwinsocklib。还是一样的异常。

有人有什么想法吗?任何人都可以阐明情况吗?

最佳答案

解决了这个问题。我使用的是带有 Linux ABI 的库构建,而不是 Android ABI。该库现在可以使用了。

关于android - Unity3d 安卓插件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11445250/

相关文章:

android - Dagger 2 在 AppCompatActivity 中注入(inject)错误

android - 找不到 android sdk 构建工具

c++ - 提取日期字符串并确定哪个更早

c++ - '&' 在 C/C++ 中的作用是什么?它在 perl 中的等效运算符是什么?

qt - 如何为 QtWebKit 开发插件?

插件的 C++ 多态基类层次结构设计

android - Cordova Javascript QR 扫描仪插件无法在 Android 上运行 (cordova-plugin-qrscanner)

android - 如何设置添加 child 时调用的onChildAdded

java - 无法在 Java 中添加整数值

c++ - 多次包含命名空间的链接器错误