我正在尝试使用适用于 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();
任何想法如何解决它?
编辑: Reseaching JNI_OnLoad,我发现了这个描述:
“VM 在加载本地库时调用 JNI_OnLoad(例如,通过 System.loadLibrary)。JNI_OnLoad 必须返回本地库所需的 JNI 版本。为了使用任何新的 JNI 函数,本地库必须导出一个JNI_OnLoad 函数,返回 JNI_VERSION_1_2。如果原生库没有导出 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 ?