napi_unwrap接口在取出绑定的C++对象并进行操作时有哪些步骤?

阅读 591
1 个回答

在C++代码中,当需要操作绑定的C++对象时(如MyObject::GetValueMyObject::SetValueMyObject::PlusOne等函数中),首先获取ArkTS对象(jsThis),然后调用napi_unwrap接口,传入环境(env)和ArkTS对象(jsThis),并通过reinterpret_cast将取出的C++对象指针赋值给相应的变量(如MyObject* obj),最后就可以对取出的C++对象进行操作(如获取值、设置值、执行plusOne操作等)。示例代码如下:

napi_value MyObject::GetValue(napi_env env, napi_callback_info info) {
    napi_value jsThis;
    napi_get_cb_info(env, info, nullptr, nullptr, &jsThis, nullptr);
    MyObject* obj;
    napi_unwrap(env, jsThis, reinterpret_cast<void**>(&obj));
    napi_value num;
    napi_create_double(env, obj->value_, &num);
    return num;
}

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题