【问题标题】:Android - UnsatisfiedLinkError: unknown failure loading libQt5Core.soAndroid - UnsatisfiedLinkError:加载 libQt5Core.so 时出现未知故障
【发布时间】:2014-01-28 16:00:00
【问题描述】:

这是我第一次决定在这里写,但是我很长时间成功地使用了stackoverflow,感谢那些花时间帮助别人的人! :)

现在,我还没有找到这方面的信息,我正在尝试在我的 android 应用程序中使用一个使用 Qt 的库。问题是我无法加载 libQt5Core.so。运行 Android 时抛出 unsatisfiedLinkError: unknown failure。 我尝试通过两种方式加载它。
第一种,带有自己的 Android.mk:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Qt5Core
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libQt5Core.so
LOCAL_EXPORT_C_INCLUDES :=  $(LOCAL_PATH)/include \
                            $(LOCAL_PATH)/include/QtCore
include $(PREBUILT_SHARED_LIBRARY)

第二个,手动添加到lib目录中。

我以这种方式从 Native.java 文件加载库:

System.loadLibrary("gnustl_shared");
System.loadLibrary("Qt5Core");
System.loadLibrary("mysharedlibray");
System.loadLibrary("thewholelibrary");

mysharedlibrary 有一个 Makefile,它是使用 Qt 的库。 整个库包括 jni 代码和 mysharedlibrary,我使用 ndk-build 制作。

我从 Necessitas 包中获得了 libQt5Core.so,我想我可以从 Necessitas 系统中使用它。

我还想制作一个“独立共享库”mysharedlibrary,其中包含 Qt(因为我在 Android 的 jni 中没有使用 Qt),但它不允许我这样做。

非常感谢!

【问题讨论】:

    标签: android android-ndk unsatisfiedlinkerror qtcore


    【解决方案1】:

    要在你的android项目中加载libQt5Core.so,你应该添加对QtAndroid-bundled.jar的依赖。您可以在jar目录下的Qt安装目录中找到该文件。在这一步之后,您可以在没有UnsatisfiedLinkError 的情况下调用System.loadLibrary("Qt5Core");

    原因:QtCore的JNI_OnLoad在启动时会加载一个名为QtNative的activity,如果找不到则返回JNI_ERRQtNativeQtAndroid-bundled.jar 中定义。我在这里找到答案:https://stackoverflow.com/a/25856689/1091536

    【讨论】:

      【解决方案2】:

      我找到了一种解决方案:

      static {
          try {
              System.loadLibrary("gnustl_shared");
              System.loadLibrary("Qt5Core");
          } 
          catch( UnsatisfiedLinkError e ) {
              System.err.println("Native code library failed to load.\n" + e);
          }
          System.loadLibrary("mysharedlibray");
          System.loadLibrary("thewholelibrary");
      }
      

      如果您的库使用 Qt,但仅在其内部有效。

      【讨论】:

      • 你确定这对你有用吗?我也有一个 unsatisfiedLinkError 但我不能像这样摆脱它......
      猜你喜欢
      • 2017-07-23
      • 2021-06-13
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 2019-06-08
      • 2023-04-09
      相关资源
      最近更新 更多