B という ac ライブラリがあり、A という他の c ライブラリに依存しています。Android NDK を介して A を正常にコンパイルして使用できると確信しています。
現在、Android NDK を使用して B ライブラリをコンパイルしようとしています。私は、jni フォルダーを持つ Android プロジェクトを持っています。私のjniフォルダーにはAフォルダーとBフォルダーが含まれており、ライブラリcコードがあります。jni フォルダにはビルド済みのフォルダもあり、そこには a.so ファイル (ビルド済みの A ライブラリ ファイル) が含まれています。
私の問題は、B をビルドできないことです。コンパイルはできますが、リンクできません。誰かが私の間違いを指摘するのを手伝ってくれませんか? A と B は、プロジェクトに使用している一般的な名前であり、実際に使用している名前ではありません。以下に Android.mk ファイルをリストします。
A のビルドに使用される Android.mk ファイル (このファイルには、A コードも含まれていますが、説明した Android プロジェクトには表示されません):
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libA
LOCAL_SRC_FILES := helloworld.c A/src/fileA.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/A/src
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/A/src
include $(BUILD_SHARED_LIBRARY)
ビルド済みフォルダー内の Android.mk ファイル:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libA
LOCAL_SRC_FILES := prebuilt/libA.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/A/src
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libB
LOCAL_SRC_FILES := B/src/fileB.c
LOCAL_SHARED_LIBRARIES := libA
include $(BUILD_SHARED_LIBRARY)
ndk-build コマンドを実行すると、最終的な出力は次のようになります。
B/src/fileB.c:15: エラー: 'A_function' への未定義の参照 collect2: ld が 1 の終了ステータスを返しました make: * [obj/local/armeabi/libB.so] エラー 1