引用适用于ArkTs的C++ so库

相关问题

鸿蒙开发Native C++模块如何引用so库

场景

如果你手上的so库是适用于ArkTs的(类似于Node的 C/C++ addons with N-API),就可以使用以下方法引入。如果是纯c++ so库,想要在Native c++模块引用,可以移步鸿蒙开发Native C++模块如何引用so库

名词说明

  • Module是指的需要引用so库的模块;
  • 适用于ArkTs的so库是指so库已经包含了napi的接口,暴露给ArkTs的napi相关的代码已经封装在so库中了,这种情况下so库提供方除了so库还会包含index.d.tsoh-package.json5两个so库声明文件;

项目配置步骤

引用适用于ArkTs的so库主要分为两步,so库引用和so库方法声明。

一、so库引用

so库放到Module目录下的libs(如果没有则创建)下对应的架构目录中,一般so库生成的时候,会有libc++_shared.so, 这个公共依赖库也要放到对应的架构目录中。

然后直接在代码中使用:

import xxx from 'libxxx.so'

//方法调用
xxx.add(1,2)

通过上面的方法就可以正常运行了,但是缺少方法声明,编译器不知道方法的如何定义的,也就是没有智能提示。

二、so库方法声明

通过上述方法后,so库能正常调用,但是调用方法的时候没有智能提示,我们需要把方法声明暴露给编译器。

一般so库生成后会还有附带两个文件index.d.tsoh-package.json5

//index.d.ts
export const add: (a: number, b: number) => number;
///oh-package.json5
{  
  "name": "libtestnative.so",  
  "types": "./index.d.ts",  
  "version": "",  
  "description": "Please describe the basic information."  
}
  1. 将上述两个文件copy到Module/src/main/cpp/types/libtestnative(libtestnative是so库的名称,没有的文件夹需要自行创建)。
  2. Module目录下的oh-package.json5添加依赖
{
...
"devDependencies": {
  "@types/libtestnative.so": "file:./src/main/cpp/types/libtestnative"  
},
...
}
  1. 同步oh-package.json5之后,会发现Module下的oh-modules/@types多了一个libtestnative.so, 至此so库方法声明成功。
  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值