是的,需要通过回调的方式实现,你可以参考以下示例代码实现 的需求:<br\>1、在index.d.ts中链接ArkTS侧函数与C++侧函数:export const nativeCallArkTS: (cb: (a: string) => string) => string; 2、在C++测调用ArkTS侧函数:static napi_value NativeCallArkTS(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); // 创建一个string,作为ArkTS的入参 napi_value argv = nullptr; napi_create_string_utf8(env, "yes", 3, &argv); // 调用传入的callback,并将其结果返回 napi_value result = nullptr; napi_call_function(env, nullptr, args[0], 1, &argv, &result); return result; }3、将NativeCallArkTS接口导出:EXTERN_C_START static napi_value Init(napi_env env, napi_value exports) { napi_property_descriptor desc[] = { {"nativeCallArkTS", nullptr, NativeCallArkTS, nullptr, nullptr, nullptr, napi_default, nullptr} }; napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); return exports; } EXTERN_C_END4、在ArkTS中调用函数:import nativeFun from 'libentry.so'; @Entry @Component struct Index { @State message: string = 'nativeCallArkTS'; build() { Row() { Column() { Text(this.message) .onClick(() => { this.message += nativeFun.nativeCallArkTS((a: string)=> { return a }) }) } .width('100%') } .height('100%') } }
是的,需要通过回调的方式实现,你可以参考以下示例代码实现 的需求:<br\>1、在index.d.ts中链接ArkTS侧函数与C++侧函数:
2、在C++测调用ArkTS侧函数:
3、将NativeCallArkTS接口导出:
4、在ArkTS中调用函数: