HarmonyOS ArkTS与C/C++的交互

1、ArkTS层如何向c/c++层注册一个监听对象,实现代理模式

2、对于c/c++层某个类中拥有复杂数据结构的成员变量,ArkTS侧如何进行引用

3、Native侧对外接口index.d.ts,以及ArkTS调用侧Index.ets分别如何模块化

HarmonyOS
2024-08-23 12:40:49
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

问题1:

首先,在 arkts中定义一个接口,描述监听对象应该具有的属性和方法。这个接口将作为 TypeScript 和 C/C++ 之间通信的契约。

//ets
interface MyListener { 
onEvent(data: ESObject): void; 
}

//ets
class ProxyListener implements MyListener { 
  private listener: MyListener | null = null; 
  registerListener(listener: MyListener) { 
    this.listener = listener; 
  } 
  onEvent(data: ESObject) { 
    if (this.listener) { 
      this.listener.onEvent(data); 
    } 
  } 
}

//c++
void someCCppFunction(ProxyListener* proxy) { 
// 模拟触发事件并将数据传递给监听对象 
proxy->onEvent("Some data from C/C++"); 
}

问题2:

需要知道C++ 层中数据结构的结构和类型,手动创建对应的 arkts 类型定义,通过arkts层接收返回c++层的成员变量来进行引用

问题3:

Native侧对外接口index.d.ts,用napi_wrap 导出 对象 的方式

ArkTS调用侧Index.ets,可以在将方法封装在一个class中,声明这个class,通过class调用

分享
微博
QQ
微信
回复
2024-08-23 21:26:37
相关问题
ArkTSC++之间交互
776浏览 • 1回复 待解决
如何实现ArkTSC/C++数组转换
272浏览 • 1回复 待解决
如何实现ArkTSC/C++HashMap转换?
703浏览 • 0回复 待解决
如何实现ArkTSC/C++对象传递
205浏览 • 1回复 待解决
ArkTSC++互相直接调用
1117浏览 • 1回复 待解决
如何在C/C++ 创建ArkTS对象
1834浏览 • 1回复 待解决
c/c++层主动调用ArkTS存在问题
78浏览 • 1回复 待解决
C++调用ArkTS 定义方法
1198浏览 • 1回复 待解决
C++ 如何获取操作 Arkts 实例
563浏览 • 1回复 待解决
如何修改C++版本?C++支持情况?
592浏览 • 1回复 待解决
ArkTS对象绑定C++对象如何回收?
563浏览 • 1回复 待解决
ArkTS调用C++类中成员函数
871浏览 • 1回复 待解决
HarmonyOS ArkTSC++ 偶现方法找不到。
147浏览 • 1回复 待解决
HarmonyOS C++异步操作
51浏览 • 1回复 待解决
C++同步调ArkTS里面的方法
659浏览 • 1回复 待解决
使用C++进行HarmonyOS开发问题
178浏览 • 2回复 待解决
提问
该提问已有0人参与 ,帮助了0人