HarmonyOS有C++调用ArkTs代码的demo示例吗?

HarmonyOS有C++调用ArkTs代码的demo示例吗?

HarmonyOS
2024-09-11 12:09:48
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
superinsect

.cpp

static napi_value loadModule(napi_env env, napi_callback_info info) { 
  napi_value result; 
  //1. 使用napi_load_module_with_info加载har模块 
  napi_status status = napi_load_module_with_info(env, "entry/src/main/ets/pages/test", "com.example.callback/entry", &result); 
  napi_value testFn; 
  //2. 使用napi_get_named_property获取test函数 
  napi_get_named_property(env, result, "test", &testFn); 
  napi_value inputargs[2]; 
  int32_t a=3,b=1; 
  napi_create_int32(env, a, &inputargs[0]); 
  napi_create_int32(env, b, &inputargs[1]); 
  //3. 使用napi_call_function调用函数test 
  napi_value output; 
  napi_call_function(env, result, testFn, 2, inputargs, &output); 
  return output; 
} 
EXTERN_C_START 
static napi_value Init(napi_env env, napi_value exports) 
{ 
  napi_property_descriptor desc[] = { 
  // { "add", nullptr, Add, nullptr, nullptr, nullptr, napi_default, nullptr }, 
  { "loadModule", nullptr, loadModule, nullptr, nullptr, nullptr, napi_default, nullptr } 
}; 
napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); 
return exports; 
} 
EXTERN_C_END
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.

//entry/src/main/ets/pages/test.ets

export function test(a:number,b:number){ 
  let c = a-b 
  console.log("%d - %d = %d",a,b,c) 
}
.d.ts
export const loadModule:()=>any;
index.ets
  .onClick(() => { 
   testNapi.loadModule()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

build-profile_json5配置runtimeonly

"apiType": "stageMode", 
"buildOption": { 
  "arkOptions": { 
    "runtimeOnly": { 
      "sources": [ 
      "./src/main/ets/pages/test.ets" 
      ] 
    } 
  },
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

也可参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/use-napi-load-module-0000001821156134-V5

分享
微博
QQ
微信
回复
2024-09-11 16:02:43


相关问题
HarmonyOS Empty Ability工程调用CC++代码
660浏览 • 1回复 待解决
C++调用ArkTS 定义方法
2932浏览 • 1回复 待解决
c/c++层主动调用ArkTS存在问题
1286浏览 • 1回复 待解决
ArkTSC++互相直接调用
3260浏览 • 1回复 待解决
ArkTS调用C++类中成员函数
1940浏览 • 1回复 待解决
HarmonyOS ArkTSC/C++交互
1360浏览 • 1回复 待解决
HarmonyOS怎么反射调用demo
513浏览 • 1回复 待解决
如何在C/C++ 创建ArkTS对象
2986浏览 • 1回复 待解决
c++侧可以直接调用tsstatic方法
2739浏览 • 1回复 待解决
HarmonyOS C++ArkTS交互
598浏览 • 1回复 待解决