Я хочу создать общую библиотеку. Чтобы построить его, мне нужно вызвать другую общую библиотеку. Вот что я сделал:
1. Создайте один проект Android под названием BuildLib и добавьте новую папку "jni" в каталог проекта. Содержимое папки jni:
JNI → Android.mk
- > Application.mk
- > add.cpp
- > add.h add.cpp просто добавьте два числа:
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)
После сборки проекта я получил libadd.so в каталоге $(BUILDLIB)/libs/armeabi/
.
Создайте еще один 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 ссылка на 'add (int, int)';
Я думаю, что libadd.so
не может быть найден, но я не знаю, как его изменить. Кто-нибудь знает, как я могу это исправить? Любая помощь будет оценена.