当我试图从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 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。仍然是同样的例外。
有谁有什么想法吗?有没有人能说明一下情况?
发布于 2012-07-16 09:18:07
弄清楚了问题所在。我使用的是Linux ABI的lib版本,而不是Android ABI。lib现在可以工作了。
https://stackoverflow.com/questions/11445250
复制相似问题