NDK 中调用so库函数

一、首先说明一下文件放置的目录结构如下:

----jni
    | prebuild
        |libturbojpeg.so
        |libturbojpeg.h
        |prebuild.mk
    Android.mk
    Application.mk
    com_XXX_XXX_XXX.cpp
    com_XXX_XXX_XXX.h

说明:prebuild是我们需要调用的第三方的so文件的放置的目录,里面还有一个prebuild.mk文件,主要是用来声明预编译用的.libturbojpeg.h 为相应的头文件。

其中libturbojpeg.h里面定义函数:

Mat decodeJpg(...,...,...) 

二、我的需求:在com_XXX_XXX_XXX.cpp中需要使用到decodeJpg,详细如下:

#include "prebuild/libturbojpeg.h"
void  myDecode()
{
    Mat m = decodeJpg(...);
}

三、具体说明: (1)prebuild.mk内容:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := turbojpeg
LOCAL_SRC_FILES := libturbojpeg.so
TARGET_PRELINK_MODULES := false
include $(PREBUILT_SHARED_LIBRARY)

(2)Android.mk内容:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

#OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=STATIC
include ../../../../sdk/native/jni/OpenCV.mk

MY_FILES_PATH  :=  $(LOCAL_PATH) \
               #   $(LOCAL_PATH)/../../Classes
			
MY_FILES_SUFFIX := %.cpp %.c %.cc

My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f) ) 
My_All_Files := $(My_All_Files:$(MY_CPP_PATH)/./%=$(MY_CPP_PATH)%)
MY_SRC_LIST  := $(filter $(MY_FILES_SUFFIX),$(My_All_Files)) 
MY_SRC_LIST  := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)

**LOCAL_SHARED_LIBRARIES += turbojpeg**

LOCAL_SRC_FILES += $(MY_SRC_LIST)
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_LDLIBS     += -llog -ldl
LOCAL_CFLAGS += -std=gnu++11

LOCAL_MODULE     := LPR

include $(BUILD_SHARED_LIBRARY)1. 这里是列表文本
**include $(LOCAL_PATH)/prebuild/prebuild.mk**

注:加粗部分是需要加载第三方so库需要的mk脚本

(3)ndk-build 做好上面的工作了之后就可以执行NDK编译了

转载于:https://my.oschina.net/u/733649/blog/485228

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值