HarmonyOS napi C++侧怎么通过一个“ClassName” 初始化一个ArkTS的对象

HarmonyOS napi C++侧怎么通过一个“ClassName” 初始化一个ArkTS的对象。

HarmonyOS
2024-09-11 11:32:26
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

参考如下示例:

static napi_value NativeCallArkTS(napi_env env, napi_callback_info info) { 
  // 期望从ArkTS侧获取的参数的数量,napi_value可理解为ArkTS value在native方法中的表现形式。 
  size_t argc = 1; 
  napi_value args[1] = {nullptr}; 
  // 从info中,拿到从ArkTS侧传递过来的参数,此处获取了一个ArkTS参数,即arg[0]。 
  napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); 
  napi_value instance; 
  // 不需要使用获取方法的方式获取构造函数,constructor不是class的构造函数,直接传接受的class就行 
  napi_status status = napi_new_instance(env, args[0], NULL, NULL, &instance); 
  napi_value func; 
  napi_get_named_property(env, instance, "add", &func); 
  napi_value res; 
  napi_create_double(env, 10, &res); 
  napi_value result; 
  napi_call_function(env, instance, func, 1, &res, &result); 
  return result; 
}

NAPI导出类对象:https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/napi_export_object.md#napi-%E5%AF%BC%E5%87%BA%E7%B1%BB%E5%AF%B9%E8%B1%A1

C++ ArkTS对象调用可以参考:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/napi/use-napi-object-wrap.md

说明:文件名和模块名用自己的就可以,把相关的代码参考下即可。

分享
微博
QQ
微信
回复
2024-09-11 17:04:10
相关问题
如何在Native构建一个ArkTS对象
1974浏览 • 1回复 待解决
PersistentStorage如何持久一个对象?
2706浏览 • 1回复 待解决
如何定义一个未知类型对象
647浏览 • 2回复 待解决
ArkTS如何实现一个底部弹窗?
594浏览 • 1回复 待解决
怎么判断一个类型是stirng
654浏览 • 1回复 待解决
如何判断一个对象实现了某个接口
1133浏览 • 1回复 待解决
如何判断一个对象是否在对象数组中
2167浏览 • 1回复 待解决