鸿蒙北向应用使用三方库二进制文件

简介

北向应用集成三方库的方法除了通过 源码方式集成 ,也可以直接集成已交叉编译好的二进制文件。本文主要介绍如何将二进制文件集成到应用中。

注意:集成到北向应用的二进制文件必须是通过OpenHarmony的SDK交叉编译生成的,不能是通过rom方式编译生成的。

集成方法

交叉编译三方库

交叉编译的方法可以参照文档 OpenHarmony SDK 使用说明 ,也可以直接使用 lycium工具 .

应用中调用三方库

  1. 将三方库生成的二进制文件拷贝到应用工程目录

    为了更好的管理应用集成的三方库,在应用工程的cpp目录新建一个thirdparty目录,将生成的二进制文件以及头文件拷贝到该目录下,如下图所示,xxx代表的是三方库名称,xxx文件夹下包含了arm架构以后aarch64架构2种方式生成的二进制文件,每种架构目录下包含了该库的头文件(include)以及二进制文件(lib):

如果该三方库二进制文件为so文件,还需要将so文件拷贝到工程目录的entry/libs/${OHOS_ARCH}/目录下,如下图:

动态库引用事项注意: 应用在引用动态库的时候是通过soname来查找的,所以我们需要将名字为soname的库文件拷贝到entry/libs/${OHOS_ARCH}/目录下(soname查看方法: $OHOS_SDK/llvm/bin/llvm-readelf -d libxxx.so)。另外,不带版本号的动态库以及带主版本号的动态库在linux下是一个软连接,但拷贝到windows目录后变为实体,因此不需要做任何单独处理。

  1. 配置对应链接

配置链接只需要在cpp目录的CMakeLists.txt文件中添加对应target_link_libraries即可:

  • 配置静态库链接
    target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/xxx/${OHOS_ARCH}/lib/libxxx.a)
  • 配置动态库链接
    target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/xxx/${OHOS_ARCH}/lib/libxxx.so)

  1. 配置头文件路径

配置链接只需要在cpp目录的CMakeLists.txt文件中添加对应target_include_directories

    target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/xxx/${OHOS_ARCH}/include)
  1. 编写NAPI接口

配置完三方库的链接和头文件路径后,可以根据各自的业务逻辑调用三方库对应的接口完成NAPI接口的编写,NAPI接口开发可以参照文档 NAPI学习.

  1. 编译构建

请参考文档 DevEco Studio编译构建指南

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

使用三方来读取CSV文件可以减少代码量和提高程序的可维护性。以下是使用C++11和第三方进行CSV文件读取的步骤: 1. 安装第三方:常用的CSV文件读取有libcsv、TinyCSVParser、Fast C++ CSV Parser等,这里以TinyCSVParser为例。可以通过GitHub下载,并将其包含到项目中。 2. 导入头文件:在需要读取CSV文件的C++源代码中,导入TinyCSVParser的头文件。 ```c++ #include "csv_parser.hpp" ``` 3. 定义CSV文件解析器:使用TinyCSVParser需要定义一个CSV文件解析器,用于解析CSV文件中的数据。在定义时需要指定CSV文件的分隔符、是否忽略第一行等参数。 ```c++ typedef csv::Parser< csv::delimiter<','>, csv::quote_character<'"'>, csv::first_row_is_header<true> > CsvParser; ``` 4. 创建CSV文件解析器:创建一个CSV文件解析器对象,并将CSV文件的路径作为参数传递给它。 ```c++ CsvParser parser("path/to/csvfile.csv"); ``` 5. 读取CSV文件数据:通过调用CSV文件解析器的`begin()`和`end()`方法,可以遍历CSV文件中的所有数据行。每一行数据被解析为一个vector<string>对象,其中每个元素表示CSV文件中的一个字段。 ```c++ for(auto& row : parser) { // 处理每一行数据 for(auto& field : row) { // 处理每个字段数据 } } ``` 完整的代码示例: ```c++ #include <iostream> #include "csv_parser.hpp" typedef csv::Parser< csv::delimiter<','>, csv::quote_character<'"'>, csv::first_row_is_header<true> > CsvParser; int main() { CsvParser parser("path/to/csvfile.csv"); for(auto& row : parser) { for(auto& field : row) { std::cout << field << ","; } std::cout << std::endl; } return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值