Tôi muốn xây dựng một thư viện được chia sẻ. Để xây dựng nó, tôi cần phải gọi một thư viện được chia sẻ khác. Đây là những gì tôi đã làm:Làm thế nào để xây dựng một thư viện được chia sẻ và gọi nó trong chương trình ndk khác
1.Tạo một dự án Android có tên "BuildLib" và thêm thư mục mới "jni" vào thư mục dự án. Nội dung của thư mục 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)
Sau khi xây dựng dự án, Tôi đã nhận libadd.so theo thư mục $(BUILDLIB)/libs/armeabi/
.
Tạo một dự án Android khác có tên "CallLib". Sao chép libadd.so
và add.h
vào thư mục jni, tạo Android.mk
, Application.mk
và 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);}
Sau khi tất cả ở trên, tôi xây dựng dự án CallLib, nhưng đã nhận lỗi:
undefined reference to 'add(int, int)';
Tôi nghĩ các libadd.so
không thể được tìm thấy, nhưng tôi không biết làm thế nào để sửa đổi. Có ai biết làm thế nào tôi có thể sửa lỗi này? Bất kỳ trợ giúp sẽ được đánh giá cao.
Bạn đang sử dụng Eclipse để biên dịch đúng ??? Tôi thực sự bị mắc kẹt với điều này trong Android Studio. Nếu bạn có ý tưởng về cách thực hiện việc này trong Android Studio, hãy cho tôi biết. –
liên quan: https://stackoverflow.com/questions/8358210/how-to-create-a-shared-library-in-android –