NAPI篇【3】——如何编写一个NAPI函数

        在NAPI篇【2】中讲解了cpp目录中各文件的作用,默认生成的hello.cpp源代码文件中,包含NAPI函数编写、定义与注册,本篇以分析hello.cpp的Add函数用来讲解一下NAPI函数的编写。

        首先,明确一个概念,NAPI的目的是提供了JS与C/C++不同语言模块之间的相互访问(主要是数据的传递),但是JS与C/C++是不同语言,无法直接进行数据传递,需要进行数据类型转化,这需要一座桥梁。

一、NAPI数据类型

        OpenHarmony NAPI 将 ECMAScript 标准中定义的 Boolean、Null、Undefined、Number、BigInt、String、Symbol和 Object 这八种数据类型以及函数对应的 Function 类型统一封装成了napi_value 类型,是 JS 数据类型和 C/C++ 数据类型之间的桥梁。

        napi_value 表示 JS 值的不透明指针,在 C/C++ 端要使用 JS 端传递的数据类型,都是通过 NAPI 提供的相关方法把napi_value转换成 C/C++ 类型后再使用,同理当需要把 C/C++的数据传递给 JS 应用层也要通过 NAPI 提供的方法把 C/C++ 端的数据转换成 napi_value 再向上传递

   常用的C/C++与napi_value数据类型的转换。

        1、C/C++转napi_value

        (1)int类型转换

NAPI_EXTERN napi_status napi_create_int32(napi_env env,
                                          int32_t value,
                                          napi_value* result);
NAPI_EXTERN napi_status napi_create_uint32(napi_env env,
                                           uint32_t value,
                                           napi_value* result);
NAPI_EXTERN napi_status napi_create_int64(napi_env env,
                                          int64_t value,
                                          napi_value* result);

说明:

        env:方法调用者的运行环境,包含 JS 引擎等。
        value:C/C++端的 int 类型的值。
        result

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值