我在尝试从 Unity Android 播放器访问我的共享库时收到 DllNotFoundException。我将 .so 文件放在文章HERE告诉我的 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 中。我还尝试在不更改 c# 代码的情况下将两者都重命名为 libwinsocklib。还是一样的例外。
有没有人有任何想法?任何人都可以说明情况吗?