使用CMake引入第三方so库及头文件并调用头文件声明的函数

news/2025/3/16 2:24:15/

首先,要调用别人的so库和头文件,我们自己项目中需要有NDK。
因为只有C++代码才能直接调用C++代码,也就是头文件和so库的函数。

其次,就是要想办法把头文件,so库和项目中的NDK关联起来,然后作为一个整体,生成一个jni,供Java层调用。

最后,二者的关联是通过CMake完成的。

项目目录

一.具体讲解一下CMakeLists.txt写法

1.target_include_directories 将头文件与自己项目的ndk关联
注意是add,不是add/
add指的是cpp目录下的add文件夹
#将native-lib 关联到第三方库头文件 下面的路径是第三方头文件的路径

target_include_directories(${CMAKE_PROJECT_NAME} PRIVATEadd)

2.将第三方so库和自身项目的NDK关联

2.1 add_library将要导入的so库加入到library中,注意每个so库都分开导入

导入第三方库,不同的第三方库需要分开导入,有两个so库需要导入,所以写两次

add_library(testjni SHARED IMPORTED)
add_library(add-lib SHARED IMPORTED)

2.2.set_target_properties告诉CMake so库所在的路径
注意 网上说 ${CMAKE_SOURCE_DIR} 表示源代码的根路径,也就是E:/workas/jnitest/app,这样可以避免硬编码绝对路径。
但是实际打印出来发现#CMAKE_SOURCE_DIR===E:/workas/jnitest/app/src/main/cpp,以至于CMake找不到so库,报错。
具体原因未知,只能先硬编码
#第一个参数为第三方so库名称,第二个指明配置导入第三方so库路径,第三个为第三方库的具体路径
#CMAKE_SOURCE_DIR E:/workas/jnitest/app/src/main/cpp

set_target_properties(testjniPROPERTIES IMPORTED_LOCATION
#        ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${CMAKE_ANDRO

http://www.ppmy.cn/news/1209000.html

相关文章

LeetCode(1)合并两个有序数组【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接: 88. 合并两个有序数组 1.题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合…

阿里云 :推出通义大模型编码助手产品【通义灵码】

本心、输入输出、结果 文章目录 阿里云 :推出通义大模型编码助手产品【通义灵码】前言通义灵码简介主要功能主要功能点 支持的语言和 IDEjetbrains IDEA 安装计费相关弘扬爱国精神 阿里云 :推出通义大模型编码助手产品【通义灵码】 编辑:简简…

Git学习常用命令二

新建git 仓库: git init 关联远程仓库 git remote add < name > < git-repo-url> 关联多个远程仓库 git remote add < name > <another- git - repo - url> 忘记关联 git remote -v 后面加 origin https://www.XXXXXX.com fetch push 远程仓库克隆到本…

Python语法基础(字符串 列表 元组 字典)

目录 字符串(str)字符串的创建特殊情况字符串的转义字符字符串的运算符字符串常用方法求字符串长度去掉多余空格是否包含某子串分割字符串合并字符串替换字符串统计统计字符串出现的次数 练习&#xff1a;判断字符串是否为回文串 列表(list)列表的创建列表常用方法遍历列表列表…

震裕科技-300953 三季报分析(20231108)

震裕科技-300953 基本情况 公司名称&#xff1a;宁波震裕科技股份有限公司 A股简称&#xff1a;震裕科技 成立日期&#xff1a;1994-10-18 上市日期&#xff1a;2021-03-18 所属行业&#xff1a;专用设备制造业 周期性&#xff1a;0 主营业务&#xff1a;精密级进冲压模具及下游…

海康工业相机如何提高相机帧率

影响帧率的因素 相机参数 帧率限制使能 像素格式 曝光时间 数据包大小&#xff08;网口&#xff09; 相机默认参数 ADC位深 系统环境设置

mysql explain type 枚举

explain 查看 sql 查询是否走索引。 其中 type 的枚举如下 类型说明system表只有一行&#xff08;系统表&#xff09;&#xff0c;这是 const 类型的特例const单表中的某个固定的值eq_ref使用唯一索引等值查找一个行ref使用非唯一索引查找所有匹配某个单个值的行fulltext使用…

【Git】Gui图形化管理、SSH协议私库集成IDEA使用

一、Gui图形化界面使用 1、根据自己需求打开管理器 2、克隆现有的库 3、图形化界面介绍 1、首先在本地仓库更新一个代码文件&#xff0c;进行使用&#xff1a; 2、进入图形管理界面刷新代码资源&#xff1a; 3、点击Stage changed 跟踪文件&#xff0c;将文件处于暂存区 4、通过…