我想構建一個共享庫。爲了構建它,我需要調用另一個共享庫。這是我做的:如何構建一個共享庫並在其他ndk程序中調用它
1.創建一個名爲「BuildLib」的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。
創建另一個名爲「CallLib」的Android項目。將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
,但我不知道如何修改。有誰知道我該如何解決這個問題?任何幫助將不勝感激。
你正在使用Eclipse進行編譯嗎? 我在Android Studio中確實困惑於此。 如果您有任何關於如何在Android Studio中執行此操作的想法,請告訴我。 –
相關:https://stackoverflow.com/questions/8358210/how-to-create-a-shared-library-in-android –