JNI中调用多个第三方的静态库

来源:互联网 发布:图形化编程软件优缺点 编辑:程序博客网 时间:2024/06/05 03:33


含有多个第三方库,如何加载进来呢,这样可以做到:


JNI中如何一个cpp中的函数调用已经定义的.a库中的函数:

编写android.mk如下:


  1. include $(CLEAR_VARS)     
  2. LOCAL_MODULE    := libA    
  3. LOCAL_SRC_FILES := libA.a       
  4. include $(PREBUILT_STATIC_LIBRARY)  
  5.   
  6. include $(CLEAR_VARS)     
  7. LOCAL_MODULE    := libB       
  8. LOCAL_SRC_FILES := libB.a     
  9. include $(PREBUILT_STATIC_LIBRARY)  
  10.   
  11. include $(CLEAR_VARS)     
  12. LOCAL_MODULE    := libC  
  13. LOCAL_SRC_FILES := libC.a     
  14. include $(PREBUILT_STATIC_LIBRARY)  
  15.   
  16. include $(CLEAR_VARS)             
  17. LOCAL_MODULE    := Test  
  18. LOCAL_SRC_FILES := Test.c        
  19. LOCAL_STATIC_LIBRARIES := libA libB libC     
  20. LOCAL_LDLIBS := -llog  
  21. include $(BUILD_SHARED_LIBRARY)


完整的sampleJNI中mk文件:

 LOCAL_PATH:= $(call my-dir)  
 # first lib, which will be built statically
 include $(CLEAR_VARS) 
 LOCAL_MODULE    := libtwolib-first
 LOCAL_SRC_FILES := first.c
 include $(BUILD_STATIC_LIBRARY)
 # second lib, which will depend on and include the first one
 include $(CLEAR_VARS)  
 LOCAL_MODULE    := libtwolib-second
 LOCAL_SRC_FILES := second.c  
 LOCAL_STATIC_LIBRARIES := libtwolib-first
 include $(BUILD_SHARED_LIBRARY)

变量解释:

# 提供当前文件的路径,必须定义它在你的 Android.mk 文件的开始处

LOCAL_PATH := $(call my-dir)

# include $(CLEAR_VARS)

块名字必须是唯一的,并且不能包含任何的空格。

LOCAL_MODULE:= 模块名字

# 注意:不列出头文件和包含文件在这里,因为生成系统将自动地为你估算信赖。

LOCAL_SRC_FILES := 多个源代码文件(*.c)用空格分隔

# 一个可选的路径列表,做为 include 搜索路径之一。

LOCAL_C_INCLUDES := $(LOCAL_PATH)

#静态库和动态库

#include $(BUILD_SHARED_LIBRARY)

include $(BUILD_STATIC_LIBRARY)