Voglio costruire una libreria condivisa. Per costruirlo, ho bisogno di chiamare un'altra libreria condivisa. Ecco quello che ho fatto:Come creare una libreria condivisa e chiamarla in un altro programma ndk
1.Creare un progetto Android, denominato "BuildLib", e aggiungere una nuova cartella "JNI" sotto la directory del progetto. Contenuto della cartella 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)
Dopo genera il progetto, Ho ottenuto libadd.so nella directory $(BUILDLIB)/libs/armeabi/
.
Creare un altro progetto Android, denominato "CallLib". Copiare libadd.so
e add.h
cartella JNI, creare Android.mk
, Application.mk
e 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);}
Dopo tutto sopra, genera il progetto CallLib, ma ottenuto l'errore:
undefined reference to 'add(int, int)';
penso il libadd.so
non può essere trovato, ma non so come modificare. Qualcuno sa come posso risolvere questo? Qualsiasi aiuto sarà apprezzato.
È stavano usando Eclipse per la compilazione giusta ??? Sono davvero bloccato con questo in Android Studio. Se hai qualche idea su come farlo in Android Studio, fammelo sapere. –
correlate: https://stackoverflow.com/questions/8358210/how-to-create-a-shared-library-in-android –