5

テスト用に静的 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 で同様の質問を何十回も読みましたが、まだわかりません。

4

1 に答える 1