NDK學(xué)習(xí)之靜態(tài)庫(kù)的編譯與調(diào)用
源代碼全放在新建的jni目錄
編譯的代碼 PrintTest.c
內(nèi)容:
Print.H:
extern?int?Add(int??x,?int??y);
Print.c:
#include?"PrintTest.h"?? ?? int??Add(int??x,?int??y)?? {?? ????return?x?+?y;?? }
Android.mk:
LOCAL_PATH:=?$(call?my-dir)?? include?$(CLEAR_VARS)?? LOCAL_MODULE????:=?libprint? LOCAL_SRC_FILES?:=?PrintTest.c?? include?$(BUILD_STATIC_LIBRARY)
Application.mk:
APP_ABI?:=?armeabi
cygwin編譯:ndk-build
objlocal下生成libprint.a文件??,保存好
調(diào)用:
?在一個(gè)動(dòng)態(tài)庫(kù)中調(diào)用他
文件為Use.c:
#include?"PrintTest.h"?? #includeint?UseTest(?int?x??,??int?y?)?? {?? ????return?Add(x,?y);?? }
Application.mk:
LOCAL_PATH:=?$(call?my-dir)?? ?? #?需要把靜態(tài)庫(kù)導(dǎo)入? #?? include?$(CLEAR_VARS)?? LOCAL_MODULE????:=?libprint?? LOCAL_SRC_FILES?:=?libprint.a?? include?$(PREBUILT_STATIC_LIBRARY)?? ?? #?第二個(gè)為動(dòng)態(tài)庫(kù),在動(dòng)態(tài)庫(kù)中使用我們編譯的靜態(tài)庫(kù) ? include?$(CLEAR_VARS)?? LOCAL_MODULE????:=?libuse?? LOCAL_SRC_FILES?:=?Use.c?? LOCAL_STATIC_LIBRARIES?:=?libprint include?$(BUILD_SHARED_LIBRARY)
libprint.a文件移動(dòng)到j(luò)ni目錄
ndk-build:
Administrator@momo-PC /cygdrive/d/cocos/android-ndk-r10c/mycode1
$ ndk-build
[armeabi] Compile thumb ?: use <= Use.c
[armeabi] SharedLibrary ?: libuse.so
[armeabi] Install ? ? ? ?: libuse.so => libs/armeabi/libuse.so
編譯成功