android - JNI_OnLoad 返回错误版本 (-1)

标签 android android-ndk java-native-interface qt5 unsatisfiedlinkerror

我试图在我的 Android 应用程序中加载 Qt5Core 库,我得到了这个:

JNI_OnLoad returned bad version (-1) in /data/data/com.xxx.yyy/lib/libQt5Core.so 0x41a8f3c0
Failed to load library : Qt5Core due to link error unknown failure
java.lang.UnsatisfiedLinkError: unknown failure
at java.lang.Runtime.loadLibrary(Runtime.java:370)

这是我尝试加载它的方式:

System.loadLibrary(s);

其中“s”是一个包含多个库名称的数组。其他库已正确加载..

欢迎任何想法!


编辑

所以我先得到这个:

D/dalvikvm(11445): Trying to load lib /data/app-lib/com.xxx.yyy/libQt5Core.so 0x42666fd8
D/dalvikvm(11445): Added shared lib /data/app-lib/com.xxx.yyy/libQt5Core.so 0x42666fd8

E/LibrariesLoader(11445): Failed to load library : Qt5Core due to link error JNI_ERR returned from JNI_OnLoad in "/data/app-lib/com.xxx.yyy/libQt5Core.so"

E/LibrariesLoader(11445): java.lang.UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad in "/data/app-lib/com.xxx.yyy/libQt5Core.so"

...然后加载了另一个库,没有任何错误/警告。该库具有 Qt5Core.so 作为依赖项。

我已经调查过,由于以下代码,我得到了这个 JNI_ERR:

if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_6) != JNI_OK)
return JNI_ERR;

我使用的 JNI 版本是 1.6!!!!

最佳答案

QtCore 的 JNI_OnLoad 在启动时加载名为“QtNative”的 Activity ,如果找不到则返回 JNI_ERR。

QtNative 在“QtAndroid-bundled.jar”中定义。您可以在 QT 5.3 SDK 文件夹中找到它: Qt5/5.3/android_armv7/jar/QtAndroid-bundled.jar

只需将其添加到项目的“libs”文件夹即可。

关于android - JNI_OnLoad 返回错误版本 (-1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25262603/

相关文章:

java - 通过 Jsoup post 方法登录网站不起作用

android - Flutter 中任务 ':app:stripDebugDebugSymbols' 执行失败

Android-NDK编译和链接

java - webobjects 中的进程间通信(jvm、wotaskd、apache 模块)

Java native 接口(interface) - C++ 不等待 java 函数完成

android - 在 datePickerdialog 中设置特定日期

android - bindService强制关闭

android - 从源崩溃编译的 Telegram ,更改包名称后出现 jni 错误

C++跳转到其他方法执行

android - 如何使用存储访问框架android将文件保存到下载文件夹?