Android编写C代码调用第三方动态库(例如:libopencv_java3.so)

1.本贴说明

写了这么多年Android,没有认真写过帖子,感觉挺遗憾的,称着新冠病毒猖狂在家无聊,写一篇帖子,打发下时间。本帖使用opencv2.4的头文件以及动态库,并非集成opencv的java api

2.准备

1.AndroidStudio3
2.libopencv_java3.so,以及opencv2.4的头文件,opencv2.4自己去官网下载,可能很慢,一定要下载OpenCV-android-sdk,在sdk包里面才能找到libopencv_java3.so以及头文件

3.创建Demo

注意选择Native C++的项目,如下图
创建带c的项目
创建好的项目结构如下图(此时可以运行出hello from c++的界面):
在这里插入图片描述

4.创建jniLibs,并拷贝动态库到jniLibs

在这里插入图片描述
创建好如下图,当然也可以使用libs,但是需要自己去build.gradle设置sourceSets {}
在这里插入图片描述
拷贝动态库,根据自己cpu架构自己创建对应文件夹

在这里插入图片描述
在这里插入图片描述
设置过滤,最好是都设置一下,根据自己需求,比如我只需要armeabi-v7a,就设置如下:
在这里插入图片描述

5.拷贝opencv的头文件

在如下位置找到头文件:
在这里插入图片描述
拷贝到项目中的如下位置:
在这里插入图片描述

6.修改CMakeList.txt


在这里插入图片描述
在这里插入图片描述
需要修改的地方如下图,但如果是第三方库又依赖其他动态库,其头文件路径与如下的target_include_directories有所不同:
在这里插入图片描述

target_link_libraries( # Specifies the target library.
        native-lib

        opencv_java3
        # Links the target library to the log library
        # included in the NDK.
        ${log-lib})

target_include_directories(native-lib
        PRIVATE
        ${CMAKE_SOURCE_DIR}/include)

add_library(opencv_java3 SHARED IMPORTED )

set_target_properties(opencv_java3
        PROPERTIES IMPORTED_LOCATION
        ${CMAKE_SOURCE_DIR}/../jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libopencv_java3.so)

7.在native-lib.cpp中使用opencv

看图,可以正常使用

8.结尾

第一次写技术帖子,好多格式都不会,见谅,有错误的地方望大家指出。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值