共有ライブラリを構築したい。それを構築するには、別の共有ライブラリを呼び出す必要があります。ここに私がしたことがあります:共有ライブラリを構築して他のndkプログラムで呼び出す方法
1. "BuildLib"という名前の1つのAndroidプロジェクトを作成し、プロジェクトディレクトリの下に新しいフォルダ "jni"を追加します。 JNIフォルダの内容:
jni-->Android.mk
-->Application.mk
-->add.cpp
-->add.h add.cpp just do two numbers addition:
add.h:
int add(int a,int b);
add.cpp:
#include "add.h" int add(int a,int b){ return a+b;}
Android.mk:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := add.cpp LOCAL_MODULE := add include $(BUILD_SHARED_LIBRARY)
プロジェクトをビルドした後、ディレクトリ$(BUILDLIB)/libs/armeabi/
の下にlibadd.soがあります。
別のAndroidプロジェクト「CallLib」を作成します。 libadd.so
とadd.h
をjniフォルダにコピーし、Android.mk
、Application.mk
、およびcall_add.cpp
を作成します。
Android.mk:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := libadd.so LOCAL_MODULE := add_prebuilt include $(PREBUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_C_INCLUDES := $(LOCAL_PATH) LOCAL_SRC_FILES := call_add.cpp LOCAL_MODULE := native LOCAL_SHARED_LIBRARIES := add_prebuilt include $(BUILD_SHARED_LIBRARY)
call_add.cpp:上記のすべての後に
#include "add.h" int call_add(){return add(1,2);}
、私はCallLibプロジェクトをビルドしますが、エラーが発生しました:
undefined reference to 'add(int, int)';
は、私は思いますlibadd.so
は見つかりませんでしたが、変更方法はわかりません。誰も私がこれをどのように修正できるか知っていますか?どんな助けもありがとう。 2番目Android.mk
で
をあなたがコンパイルのためにEclipseを使用していましたか? 私はAndroidスタジオでこれに悩まされています。 Androidスタジオでこれを行う方法についてご意見がありましたら、お知らせください。 –
関連:https://stackoverflow.com/questions/8358210/how-to-create-a-shared-library-in-android –