【发布时间】:2012-08-28 09:23:53
【问题描述】:
我正在尝试使用适用于 iOS 和 Android 的 Unity3D(Mono/C#) 创建 Jabber (Jabber.net) 聊天客户端。我让客户端在 iOS 中工作(在 Unity 模拟器中也运行良好)。但是,在 Nexus 7 或 HTC Desire 上运行它时,它不起作用。它不会崩溃,但也不会连接。它只会产生以下错误:
D/dalvikvm(9368):在 /system/lib/libc.so 0x413b7270 中找不到 JNI_OnLoad,跳过初始化
此错误与我的 Jabber.net 客户端的 Connect 方法有关:
jc = new JabberClient();
...
// Setting up the jabberclient and attaching eventhandlers
...
jc.Connect();
有什么办法解决吗?
编辑:研究JNI_OnLoad,我发现了这个描述:
"VM 在加载原生库时调用 JNI_OnLoad(例如,通过 System.loadLibrary)。JNI_OnLoad 必须返回原生库所需的 JNI 版本。 为了使用任何新的 JNI 函数,本机库必须导出返回 JNI_VERSION_1_2 的 JNI_OnLoad 函数。如果本机库不导出 JNI_OnLoad 函数,则 VM 假定该库仅需要 JNI 版本 JNI_VERSION_1_1。如果 VM 无法识别 JNI_OnLoad 返回的版本号,则无法加载原生库。”
来自http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/invocation.html#wp9502
是否可以使用返回 JNI_VERSION_1_2 的 JNI_OnLoad 方法重建 Jabber.net ??
【问题讨论】:
标签: c# android xmpp unity3d dalvik