2016-04-04 7 views
0

から返されました。 ます。java.lang.UnsatisfiedLinkError:JNI_ERRは、私はネイティブコード</p> <p>まず私は構築済みのライブラリをコンパイルするなど、Androidのアプリケーションを開発していJNI_OnLoadを

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := qt5Core-prebuilt 
LOCAL_SRC_FILES := libQt5Core.so 
LOCAL_EXPORT_C_INCLUDES += qtbase/include 

include $(PREBUILT_SHARED_LIBRARY) 

は、その後、私はAndroid.mkファイル PROJECT_PATH/JNI /私のライブラリ/アンドロイドで私のライブラリをコンパイルしますAndroid.mkファイルがPROJECT_PATH/JNI/QT-ライブラリ/ Android.mkです。 MK

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := myLibrary 
LOCAL_SRC_FILES := com_example_qtsignaux_Library.cpp 
LOCAL_SRC_FILES += Receiver.cpp 
LOCAL_SRC_FILES += Emitter.cpp 
LOCAL_SRC_FILES += moc_Receiver.cpp 
LOCAL_SRC_FILES += moc_Emitter.cpp 

LOCAL_SHARED_LIBRARIES := qt5Core-prebuilt 

LOCAL_C_INCLUDES += ../qt-library/qtbase/include 

LOCAL_LDLIBS := -llog 

include $(BUILD_SHARED_LIBRARY) 

私はNDKビルドスクリプトを使用してJNIフォルダをコンパイルすると、すべてがうまく動作しますが、呼び出し時に次のエラーを取得する:

static { 
    System.loadLibrary("myLibrary"); 
    } 

java.lang.UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad in "/data/app/com.example.qtsignaux-1/lib/arm/libmyLibrary.so" 
私はAPKフォルダごとするライブラリをunziped

お知らせ:libQt5Core.so、libmyLibrary.soと libgnustl_shared.soはLIB/armeabiである/とlib/armeabi-v7a /フォルダ

マイApplication.mkファイルルックス以下のような:

APP_ABI += armeabi armeabi-v7a 
APP_STL := gnustl_shared 
APP_CPPFLAGS := -frtti -fexceptions 

は、私は本当に理解していないどのようなエラー手段とシステムはapplication_package_name/libに/ アームフォルダ内のライブラリをロードしようとする理由。このフォルダは本当に存在するのですか?これは私の状況ではarmeabiとarmeabi-v7aだけですか?

ご協力いただきありがとうございます

+0

の右のjarファイルが含まれています。 'JNI_OnLoad'関数を定義しなかった場合は、どこから引き出されているのか、どうして失敗するのかを調べる必要があります。 – fadden

+0

こんにちは。私はまだ私のライブラリでstartTest()という名前の関数が1つしかないので、 – suns9

答えて

1

私は最終的に私の問題を解決しました。これはlibQt5Core.soファイルのためです

実際にこのライブラリは、外部JARファイルに含まれるいくつかのJavaクラスをロードしようとするJNI_OnLoad()関数を実装しています。

は私の問題を解決するために、私は、エラーがあなたのライブラリは `JNI_OnLoad`機能を定義し、それから` JNI_ERR`を返されたことを意味/ LIBSの