HarmonyOS 在napi_init.cpp中调用C代码怎么接收返回的参数

ArkTS调用Native napi_init.cpp中间层定义了一个函数调用了C函数ZJ_GetOneReqId() 这个函数返回一个int 我用napi_value接收是有问题的,无法找到这个C函数

以下两种方式都试过了,都不行!

接收返回参数方式1

int  puiReqId = ZJ_GetOneReqId();

接收返回参数方式2

int  puiReqId;  napi_create_int32(env, ZJ_GetOneReqId(), &puiReqId)

咨询场景描述:问题就是ArkTS调用Native的中间桥调用C函数,C函数返回一个int值,在NAPI中怎么接收?

HarmonyOS
2024-08-10 11:53:34
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

cpp的返回值就是index.d.ts的返回值,在cpp内部做了转换。

//ArkTS代码 
Button(this.msg1).backgroundColor(Color.Red).fontColor(Color.White) 
  .fontSize(15).borderRadius(10).width(150).height(30).onClick(()=>{ 
  this.msg1 = testNapi.artsCallNative(10,20).toString(); 
}) 
 
//index.d.ts暴露的接口 
export const artsCallNative: (a: number, b: number) => number; 
//cpp代码 
static napi_value ArtsCallNative(napi_env env, napi_callback_info info) { 
  size_t argc = 2; 
  // define args 
  napi_value args[2] = {nullptr}; 
  // 获取参数 并依次放入参数数组中 
  napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); 
  // 读取的到的参数 
  // 依次获取参数 
  double value0; 
  napi_get_value_double(env, args[0], &value0); 
  double value1; 
  napi_get_value_double(env, args[1], &value1); 
 
  // 返回两个参数的和 
  napi_value sum; 
  napi_create_double(env, value0 + value1, &sum); 
  return sum; 
}
分享
微博
QQ
微信
回复
2024-08-10 18:19:19
相关问题
HarmonyOS可以C代码创建子线程吗?
2473浏览 • 1回复 待解决
HarmonyOS 路由参数如何接收
149浏览 • 1回复 待解决
HarmonyOS 怎么调用C语言.a静态库
216浏览 • 1回复 待解决
多个xcompnent调用init时机
261浏览 • 1回复 待解决
Hi3861下使用CPP代码错误
5182浏览 • 1回复 待解决
非HiLog打印C代码日志怎么查看?
2385浏览 • 1回复 待解决
HarmonyOS NAPI调用ArkTS静态方法
367浏览 • 1回复 待解决