问题场景:需要将复杂对象通过ArkTS传递到c++然后调用这个对象的方法参考答复:使用napi\_get\_named\_property获取ArkTS传递对象的方法,napi\_call\_function传入参数调用对应方法参考代码:native侧:static napi_value GetMsg(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value argv[1] = {nullptr}; napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr); napi_status status; napi_value setFunc; napi_get_named_property(env, argv[0], "setMsg", &setFunc); napi_value code; napi_create_uint32(env, 200, &code); char strMsg[] = "OK"; napi_value msg; napi_create_string_utf8(env, strMsg, strlen(strMsg), &msg); napi_value parameter[2]; parameter[0] = code; parameter[1] = msg; status = napi_call_function(env, argv[0], setFunc, 2, parameter, nullptr); napi_value logFunc; napi_get_named_property(env, argv[0], "toLog", &logFunc); status = napi_call_function(env, argv[0], logFunc, 0, nullptr, nullptr); return nullptr; }ArkTS侧:export class MsgResult { code: number = 0; msg: string = ""; setMsg(code: number, msg: string) { this.code = code; this.msg = msg; } toLog() { console.log(this.code + ":" + this.msg) } } import testNapi from 'libentry.so'; import { MsgResult } from './MsgResult'; let r = new MsgResult() testNapi.getMsg(r);
问题场景:
需要将复杂对象通过ArkTS传递到c++然后调用这个对象的方法
参考答复:
使用napi\_get\_named\_property获取ArkTS传递对象的方法,napi\_call\_function传入参数调用对应方法
参考代码:
native侧:
ArkTS侧: