当前位置: 首页 > article >正文

HarmonyOS5 仓颉入门:和 ArkTs 互操作

现在一般的场景是在已有 ArkTs 库中使用仓颉,所以可以将仓颉代码封装为 ArkTs 库,提供给外部使用。

原理就是互操作宏解析被注解修饰的仓颉代码,会自动生成 ArkTs 声明文件和互操作层代码。

使用步骤:

1.在 cj 文件中,针对 class、interface 和函数,使用 @Interop[ArkTS] 进行修饰,被修饰的对象是希望被 ArkTS 调用的。

2.在 DevEco Studio 中的仓颉文件或者 module 名称右键选择“Generate Cangjie-ArkTS Interop API”,会在 cangjie 目录下生成 ark_interop_api 的声明文件。

3.ArkTS 侧添加依赖并 import ark_interop_api 即可使用。

仓颉代码:

import ohos.ark_interop.*
import ohos.ark_interop_macro.*@Interop[ArkTS]
public func sub(a: Int64, b: Int64): Int64 {return a - b
}@Interop[ArkTS]
public class CjDemo {public let name: String@Interop[ArkTS, Invisible]public var id: Float64 = 1.0public init(str: String) {name = str}public func add(a: Int64, b: Int64): Int64 {return a + b}public func foo(): Float64 {return 1.0}
}

生成的代码:

export declare class CjDemo {name: stringadd(a: number, b: number): numberfoo(): number
}export declare interface CustomLib {sub(a: number, b: number): numberCjDemo: {new (str: string): CjDemo}
}

使用:

let cjLib : CustomLib = requireCJLib("libohos_app_cangjie_entry.so") as CustomLib
console.log("result" + cjLib.sub(2, 1))let class1: CjDemo = new cjLib.CjDemo("arkts call")
console.log("result " + class1.add(5,1))
http://www.lryc.cn/news/2401635.html

相关文章:

  • 【Git 合并冲突解决记录:从 “refusing to merge unrelated histories“ 到批量冲突处理】
  • 使用vite-plugin-html在 HTML 文件中动态注入数据,如元数据、环境变量、标题
  • Kinova机械臂在Atlas手术导航系统中的核心作用
  • C++——智能指针 auto_ptr
  • .Net Framework 4/C# System.IO 命名空间(文件的输入输出)
  • 图像分类进阶:从基础到专业 (superior哥AI系列第10期)
  • 性能优化之SSR、SSG
  • 【C语言】字符与字符串
  • 经典算法:回文链表
  • uboot移植之GPIO上电初始状态的调整
  • PasteForm(ABP)框架之实现更加灵活的类似多租户的归属过滤功能,比如只能查看自己的相关数据
  • 本地id_rsa.pub输入到服务器~/.ssh/authorized_keys后,依然需要输入密码的解决办法
  • 【设计模式-3.7】结构型——组合模式
  • Unity Mac 笔记本操作入门
  • 实时数据仓库是什么?数据仓库设计怎么做?
  • Linux(12)——基础IO(下)
  • WPF可拖拽ListView
  • rocketmq索引
  • [蓝桥杯]倍数问题
  • 定时任务的 cron 表达式
  • 【MySQL】 约束
  • MySQL 的 redo log 和 binlog 区别?
  • 前端vue打开多个窗口,关闭窗口后才继续执行后续逻辑
  • 「深度拆解」Spring Boot如何用DeepSeek重构MCP通信层?从线程模型到分布式推理的架构进化
  • 如何避免在前端项目中出现重复的第三方依赖包?
  • Java开发中复用公共SQL的方法
  • 【西门子杯工业嵌入式-2-点亮一颗LED】
  • 代码随想录算法训练营第60期第五十五天打卡
  • 重磅更新! 基于Gemini 2.5 Pro打造的AI智能体PlantUML-X上线!
  • [5-02-04].第01节:Jmeter环境搭建: