テスト用に静的 C++ ライブラリを作成しました。MyLibrary
クラス、、およびコンストラクターのみを定義しMyLibrary::MyLibrary()
ます。私はそれをqtcreatorでlibMyLibrary.a
ビルドし、ビルド済みの静的ライブラリであるファイルを取得しました。
このライブラリを Android プロジェクト (NDK を使用) で使用したいと考えています。そのため、作業中の NDK テスト プロジェクトではinc
、 と同じレベルにある と呼ばれるフォルダーを追加しjni
、そこにlibMyLibrary.a
とそれに対応するヘッダーを配置しましmylibrary.h
た。
私のAndroid.mk
は次のとおりです。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MyLibrary
LOCAL_SRC_FILES := ../inc/libMyLibrary.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := helloJNI
LOCAL_SRC_FILES := mainActivity.cpp
LOCAL_C_INCLUDES += inc
LOCAL_STATIC_LIBRARIES := MyLibrary
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
コマンドはndk-build
エラーなしでコンパイルされます。しかし、私のスタティック ライブラリは明らかにリンクされていません (つまり、 に表示されませんobj/local/armeabi/objs
)。
ファイルに含めようとしましたmainActivity.cpp
が、ヘッダー ( mylibrary.h
) が見つかってもライブラリが見つからず、次のようにオブジェクトを作成できません。
MyLibrary test = MyLibrary();
私は何を間違っていますか?StackOverflow で同様の質問を何十回も読みましたが、まだわかりません。