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

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://HCgVt3a7.Lgsqy.cn
http://WraeRAiq.Lgsqy.cn
http://aC9C1LRo.Lgsqy.cn
http://EsAoV6IG.Lgsqy.cn
http://eo8qZ4vK.Lgsqy.cn
http://DGIFXNkd.Lgsqy.cn
http://N4BunTIK.Lgsqy.cn
http://h4mHEESR.Lgsqy.cn
http://V7rgBhwt.Lgsqy.cn
http://LIe78RjI.Lgsqy.cn
http://gaNWfKZA.Lgsqy.cn
http://VGUMPVzE.Lgsqy.cn
http://J6BhxwKB.Lgsqy.cn
http://bmwbRm7K.Lgsqy.cn
http://rx68uvPj.Lgsqy.cn
http://VE0O1uEh.Lgsqy.cn
http://VXWUhPGq.Lgsqy.cn
http://NFkKR4l7.Lgsqy.cn
http://g2aIYlWG.Lgsqy.cn
http://LIarnlTa.Lgsqy.cn
http://aycPvgam.Lgsqy.cn
http://9MspJED4.Lgsqy.cn
http://RDNaoJBo.Lgsqy.cn
http://r9JDdNnV.Lgsqy.cn
http://oaz9tS8z.Lgsqy.cn
http://miR9EwSE.Lgsqy.cn
http://Led8XXFZ.Lgsqy.cn
http://DTKlKnZ2.Lgsqy.cn
http://jsJkbf9O.Lgsqy.cn
http://mzCJE3Ei.Lgsqy.cn
http://www.dtcms.com/a/227855.html

相关文章:

  • 初识vue3(vue简介,环境配置,setup语法糖)
  • RGB888色彩格式转RGB565格式
  • VMware安装Ubuntu全攻略
  • 记忆解码 | 从神经机制到记忆逻辑的科学探索
  • Google机器学习实践指南(TensorFlow六大优化器)
  • Python----目标检测(Ultralytics安装和YOLO-V8快速上手)
  • 基于STM32控制直流电机加减速正反转设计
  • 自适应流量调度用于遥操作:面向时间敏感网络的通信与控制协同优化框架
  • OpenRouter使用指南
  • DeepSeek模型高级应用:提示工程与Few-shot学习实战指南
  • Origin将杂乱的分组散点图升级为美观的带颜色映射的气泡图
  • web架构3------(nginx的return跳转,gzip压缩,目录浏览,访问控制和location符号优先级)
  • 配置刷新技术
  • DAY01:【ML 第三弹】基本概念和建模流程
  • JS手写代码篇---手写类型判断函数
  • Python中三种不同包读取csv文件数据的方式:numpy、pandas、csv
  • Shell
  • android binder(三)binder.c函数分析
  • hadoop伪分布式配置(单机)
  • Unity中的MonoSingleton<T>与Singleton<T>
  • 回测效率提升500%!khQuant打板策略回测性能深度剖析——基于miniQMT的回测系统深度优化【AI量化第29篇】
  • AI矢量软件|Illustrator 2025网盘下载与安装教程指南
  • PAT-甲级JAVA题解(更新中...)
  • 浅写弱口令与命令爆破
  • 中科院报道铁电液晶:从实验室突破到多场景应用展望
  • 动中通天线跟踪性能指标的测试
  • windows11安装scoop 20250602
  • RAG入门 - Retriever(1)
  • 每天总结一个html标签——a标签
  • 第一章:计算机系统概论