我想建立一个共享库。要构建它,我需要调用另一个共享库。这是我所做的:
1.创建一个Android项目,命名为“BuildLib”,在项目目录下新建文件夹“jni”。jni文件夹内容:
jni-->Android.mk
-->Application.mk
-->add.cpp
-->add.h add.cpp 只是做两个数字相加:
添加.h:
int add(int a,int b);
添加.cpp:
#include "add.h" int add(int a,int b){ return a+b;}
安卓.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/
。
创建另一个名为“CallLib”的 Android 项目。将libadd.so
和复制add.h
到 jni 文件夹,创建Android.mk
、Application.mk
和call_add.cpp
.
安卓.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 项目,但得到了错误:
未定义对'add(int, int)'的引用;
我认为libadd.so
找不到,但我不知道如何修改。有谁知道我该如何解决这个问题?任何帮助将不胜感激。