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

//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()

build-profile_json5配置runtimeonly

"apiType": "stageMode", 
"buildOption": { 
  "arkOptions": { 
    "runtimeOnly": { 
      "sources": [ 
      "./src/main/ets/pages/test.ets" 
      ] 
    } 
  },

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

分享
微博
QQ
微信
回复
2024-09-11 16:02:43
相关问题
C++调用ArkTS 定义方法
1662浏览 • 1回复 待解决
c/c++层主动调用ArkTS存在问题
230浏览 • 1回复 待解决
ArkTSC++互相直接调用
1730浏览 • 1回复 待解决
ArkTS调用C++类中成员函数
1141浏览 • 1回复 待解决
HarmonyOS ArkTSC/C++交互
431浏览 • 1回复 待解决
HarmonyOS 如何调用标准C++
278浏览 • 1回复 待解决
c++侧可以直接调用tsstatic方法
1883浏览 • 1回复 待解决
如何在C/C++ 创建ArkTS对象
2038浏览 • 1回复 待解决
需要提供c++到js通信demo
500浏览 • 1回复 待解决
ArkTSC++之间交互
1140浏览 • 1回复 待解决
如何实现ArkTSC/C++HashMap转换?
943浏览 • 0回复 待解决
如何实现ArkTSC/C++数组转换
477浏览 • 1回复 待解决
如何实现ArkTSC/C++对象传递
438浏览 • 1回复 待解决
能使用ArkTS调用Java代码
5991浏览 • 1回复 待解决