2014-01-28 70 views
2

這是我第一次決定寫在這裏,但我很長一段時間成功地使用了stackoverflow,這要感謝那些花時間幫助別人的人! :)Android - UnsatisfiedLinkError:未知失敗加載libQt5Core.so

現在,我還沒有找到關於這方面的信息,我試圖使用我的Android應用程序中使用Qt庫。問題是我無法加載libQt5Core.so。當運行Android拋出一個不滿意連接錯誤:未知失敗。 我試圖用兩種方式加載它。
首先一個,有自己的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。

我有libQt5Core.soNecessitas包,我想我可以用它從Necessitas系統。

我也想使用Qt的「內部」一個「獨立的共享庫」 mysharedlibrary它(因爲我不使用Qt的在Android的JNI」,但它不會讓我這樣做。

非常感謝!

回答

-1

我找到了一個解決方案:

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,但只是內部本身的工作原理

+0

你確定這適合你嗎?我也有一個不滿意的LinkError,但我不能像這樣擺脫它... – CpS

+0

它不適合我。 – gomons

1

要在負載libQt5Core.so。 ndroid項目,你應該添加依賴QtAndroid-bundled.jar。您可以在jar目錄下的Qt安裝目錄中找到該文件。在此步驟之後,您可以撥打System.loadLibrary("Qt5Core");而不需要UnsatisfiedLinkError

原因:QtCore的JNI_OnLoad在啓動時加載了名爲QtNative的活動,如果未找到,則返回JNI_ERRQtNative定義於QtAndroid-bundled.jar。我來自這裏:https://stackoverflow.com/a/25856689/1091536