往期知识点整理
- 鸿蒙(HarmonyOS)北向开发知识点记录~
- 【鸿蒙实战开发】har和hsp的转换
- 【鸿蒙实战开发】基于CameraKit对相机进行操作
- 【鸿蒙实战开发】基于HAR的跨模块C++头文件引用
- 【鸿蒙实战开发】基于原生实现高级显示效果
- 【鸿蒙实战开发】基于动态配置签名的多人协同开发应用签名解决方案
- 【鸿蒙实战开发】基于webview的Picker拉起
- 【鸿蒙实战开发】基于@ohos.data.unifiedDataChannel实现数据共享
- 【鸿蒙实战开发】Fabric 自定义组件开发指南
- 【鸿蒙实战开发】基于Asset下的高安全级别数据存储
- 【鸿蒙实战开发】基于OHAudio的音频操作
- 【鸿蒙实战开发】基于AVPlayer的视频播放
- 【鸿蒙实战开发】基于原生能力的压缩与解压缩能力
- 【鸿蒙实战开发】跨语言的复杂参数类型传递
- 持续更新中……
场景说明:
我们经常在ArkTS与C++之间相互传递参数,那么具体该如何传呢?下面介绍了几个常用的场景:
场景一:string类型传递
调用接口:
napi_get_value_string_utf8
实现能力:
通过 napi_get_value_string_utf8 获取字符串长度,然后根据长度将从 ArkTS 侧传过来的 napi_value 转换成字符串。
注意:
C++里字符串结尾是\0,所以转换成字符串时长度为stringSize + 1。
核心代码解释
Index.ets文件向C++层传递string数据。
let str:string = 'hello!';
testNapi.putString(str);
将value转成字符串返回,注意C++里字符串结尾是\0,所以转换成字符串时长度为stringSize + 1。
static std::string value2String(napi_env env, napi_value value) {
size_t stringSize = 0;
napi_get_value_string_utf8(env, value, nullptr, 0, &stringSize); // 获取字符串长度
std::string valueString;
valueString.resize(stringSize + 1);
napi_get_value_string_utf8(env, value, &valueString[0], stringSize + 1, &stringSize); // 根据长度传换成字符串
return valueString;
}
C++层获取string数据。
static napi_value ts_putString(napi_env env, napi_callback_info info){
size_t argc = 1;
napi_value args[1] = {nullptr};
napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);

最低0.47元/天 解锁文章
2517

被折叠的 条评论
为什么被折叠?



