鸿蒙使用第三方SO库

一、示例:

使用第三方SO库以导入OpenCV和MNN的SO库为例

1、将MNN和Opencv的so文件(包括.407文件),放入模块下libs目录对应的版本(arm64-v8a和armeabi-v7a)

entry/libs/arm64-v8a/xxx.so

2、配置模块目录下的build-profile.json5的buildOption字段,增加abiFilters字段:

"buildOption":{
"externalNativeOptions":{
..
"abiFilters":[
"arneabi-v7a",
"arn64-v8a"
]
},
},

3、在CMakeLists.txt所在目录,创建"thirdPart”目录,然后将MNN和opencv的头文件放入该目录(头文件在提供的压缩包的 include目录里):

src/main/cpp/thirdPart/MNN/xxxx.hpp
src/main/cpp/thirdPart/opencv/opencv4/opencv2/xxxx.hpp

4、修改CMakeLists.txt文件,增加以下内容:

//实际打包内容为lib中所有的so文件,当前开发测试阶段可以先放入所有的so;后续有裁减包大小的诉求时,根据你们使用的so库,我们会提供对应的方案
// 链接需要的so库至当前的模块可引入需要的模块
//'yitusdk’表示模块名称;${CMAKE_CURRENT_SOURCE_DIR}表示CMakeLists所在目录;${0HOS_ARCH}表示构建的对应版本(arm64-v8a等) 
target_link_libraries(yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${0HOS_ARCH}/1ibMNN.so)
target_link_libraries (yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${0HOS_ARCH}/libopencv_core.so) 
target_link_libraries(yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${0HOS_ARCH}/libopencv_imgproc.so)//引入对应的头文件实际打包头文件不会影响包大小
target_include_directories(yitusdk PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart)//以下根据实际情况,某个库,如opencv,根据include时的错误信息,可以写多条
target_include_directories(yitusdk PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart/opencv/opencv4) 
target_include_directories(yitusdk PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /thirdPart/opencv)

补充说明:放置so文件时,注意对应的407也需要一同放入(由于windows环境的特殊)

二、其他补充说明

鸿蒙只能使用基于napi编译的so,HarmonyOS的应用必须用js来桥接native。需要使用ace_napi仓中提供的napi接口来处理js交互。

  1. 使用鸿蒙提供的NDK直接开发so库,可以直接使用
  2. 如果是其他环境下编译的so库需要封装Napi调用SO库

Node-API开发规范

Native API在应用工程中的使用指导

基于NDK编译三方库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/632686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6.3.5编辑视频

6.3.5编辑视频 除了上面的功能外,Camtasia4还能进行简单的视频编辑工作,如媒体的剪辑、连接、画中画等。 下面我们就利用Camtasia4的强大功能来实现一个画中画效果,在具体操作之前,需要准备好两个视频文件,一个作为主…

基于SIFT算法的图像匹配

基本概念 尺度不变特征转换(Scale-invariant feature transform,简称SIFT) ,是一种用来侦测与描述影像中的局部性特征的算法,它在空间尺度中寻找极值点,提取位置、尺度、旋转不变量,生成特征描述子。 SIFT算法的实质是…

esp32-idf eclipse 定时器的使用demo

esp32定时器的使用demo 1、介绍 ESP32芯片包含两个硬件定时器组。每组有两个通用硬件定时器。它们都是基于16位预分频器和64位自动重载功能的向上向下计数器的64位通用定时器。 2、API接口函数 创建定时器函数: esp_timer_create(); esp_err_t esp_timer_create …

触摸按键控制LED灯

目录 1.理论 2.代码 2.1 touch_ctrl_led.v 2.2 tb_touch_ctrl_led 1.理论 以上的波形图的touch_flag是采用组合逻辑的方式产生的。 以上的touch_flag是采用时序逻辑产生的,时序逻辑会延迟一拍。 以上是上升沿和下降沿的组合逻辑和时序逻辑实现,逻辑或…

微信小程序 - 导航 、wxs及生命周期函数

导航 声明式导航 使用<navigator></navigator>标签 属性类型默认值必填说明targetstringself否在哪个目标上发生跳转&#xff0c;默认当前小程序urlstring否当前小程序内的跳转链接open-typestringnavigate否跳转方式 target参数 属性值说明self当前小程序min…

书生·浦语大模型实战营第五节课笔记及作业

LMDeploy 大模型量化部署实践 1 大模型部署背景 1.1 模型部署及大模型特点 1.2 大模型部署挑战及方案 2 LMDeploy简介 2.1 核心功能-量化 2.2 核心功能-推理引擎TurboMind 2.1 核心功能-推理服务api server 3 动手实践及作业 按照文档LMDeploy 的量化和部署中的步骤在Intern…

【4k】4k的webrtc播放示例

目录 使用带研发角色的账号&#xff0c;在app端设置下分辨率 &#xff1a; 4k 点播 ffplay播放看下详细的参数 使用带研发角色的账号&#xff0c;在app端设置下分辨率 &#xff1a; 4k 点播 ffplay播放看下详细的参数

HBASE学习四:常用命令汇总梳理(包括数据库、zk、hdfs相关操作与配置)

1、服务状态 1、后台查询 hbase shell #进入hbase的shell页面,配置环境变量可直接执行。status #查看当前服务状态status detailed #查看当前详细服务信息,包括master的active和standby信息version 查看版本信息 2、页面查询 http://HMASTERip:16010 #查看master 状态 …

解决Windows下VSCode控制台乱码问题

我们在Windows使用VSCode编写C/C程序时&#xff0c;如果代码中的中文字符串使用的是UTF8编码&#xff0c;且代码内没有设置控制台的输出编码&#xff0c;或者编译时没有指定运行时编码&#xff08;GCC可以在编译时使用-fexec-charsetGBK来指定运行时的字符串编码&#xff1b;cl…

将AI的潜能转化为人类的福祉

在这个技术迅速发展的时代&#xff0c;AI不仅是一项突破性的技术&#xff0c;更是人类未来的关键。作为一名AI训练师&#xff0c;我的目标不仅仅是开发先进的AI产品&#xff0c;更重要的是让这些产品服务于人类&#xff0c;改善人们的生活。 我相信&#xff0c;AI的真正价值在于…

【征服redis9】快速征服lua脚本

lua脚本&#xff0c;这个名字总让人想歪&#xff0c;不过老外发明名字&#xff0c;我们只能跟着叫了。这个脚本语言在redis里和Nginx里都有用&#xff0c;所以我们就来看一下。 目录 1 lua的介绍与说明 2 lua的基本语句体验 3.Lua的数据结构和高级特性 1 lua的介绍与说明 …

MFC 绘图

目录 MFC中绘图 CPaintDC&#xff0c;封装了在WM_PAINT消息中绘图的绘图设备 CClientDC类&#xff0c;封装了在客户区绘图的绘图设备 CGdiObject类(绘图对象类)&#xff0c;封装了各种绘图对象相关的操作 MFC中绘图 Windows绘图需要绘图设备&#xff0c;Win32&#xff1a;…

react + antd:AutoComplete 实现既可以自由输入又能下拉选择

在工作中遇到一个需求&#xff0c;既能下拉选择&#xff0c;有要求可以自由输入没有的选项。 刚开始考虑使用 Select 组件&#xff0c;发现只有多选&#xff08;mode"tags"&#xff09;的时候才能随意输入内容&#xff0c;但多选又不符合当前的业务需求。 在犹豫要…

Ubuntu防火墙管理

防火墙管理 防火墙是用于监控和过滤传入和传出网络流量的工具。 它通过定义一组确定是允许还是阻止特定流量的安全规则来工作。 Ubuntu 18.04安装了一个称为UFW的防火墙配置工具。 它是用于管理iptables防火墙规则的用户友好型前端。 它的主要目标是使防火墙的管理变得更容易…

pyqtgraph绘图类

pyqtgraph绘图类 pyqtgraph绘图有四种方法: 方法描述pyqtgraph.plot()创建一个新的QWindow用来绘制数据PlotWidget.plot()在已存在的QWidget上绘制数据PlotItem.plot()在已存在的QWidget上绘制数据GraphicsLayout.addPlot()在网格布局中添加一个绘图 上面四个方法都接收同样…

OpenHarmony应用开发-进程间通讯

版本&#xff1a;v3.2 Beta5 进程模型 OpenHarmony的进程模型如下图所示&#xff1a; 应用中&#xff08;同一包名&#xff09;的所有UIAbility、ServiceExtensionAbility、DataShareExtensionAbility运行在同一个独立进程中&#xff0c;即图中绿色部分的“Main Process”。…

Linux设备驱动开发学习笔记(等待队列,锁,字符驱动程序,设备树,i2C...)

1. 内核工具和辅助函数 1.1宏container_of container_of函数可以通过结构体的成员变量检索出整个结构体 函数原型&#xff1a; /* pointer 指向结构体字段的指针 container_type 结构体类型 container_field 结构体字段名称 返回值是一个指针 */ container_of(pointer, con…

HPsocket 在 C# 中的运用:一款优秀的 socket 通信框架

摘要&#xff1a;本文将为您详细介绍 HPsocket&#xff0c;一款适用于 win32 平台的 socket 通信框架。同时&#xff0c;我们还将探讨如何在 C# 项目中使用 HPsocket&#xff0c;实现网络通信功能。通过本文&#xff0c;您将深入了解 HPsocket 的特点、优势以及在 C# 中的实际应…

在线App封装技术:HTML5的新生命

HTML5封装的魅力所在HTML5带来了丰富的多媒体功能、地理位置服务、离线存储等特性&#xff0c;使得Web应用的体验更加接近原生App。封装HTML5到App中&#xff0c;可以大大缩短开发周期&#xff0c;降低开发成本&#xff0c;并且一次编写&#xff0c;多平台运行&#xff0c;极大…

MySQL面试题 | 15.精选MySQL面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…