- 博客(97)
- 收藏
- 关注
原创 鸿蒙 SDK 发布实战:JWorker 上架 ohpm 全流程
分享一次完整的鸿蒙 HAR SDK 发布过程,以前几天发布的JWorkerSDK 为例。JWorker是一套简单易用的基于鸿蒙 Worker 的双向 RPC 通讯机制。库地址:https://ohpm.openharmony.cn/#/cn/detail/jworker仓库地址:https://github.com/zincPower/JWorker话不多说,接下来分享每一步的操作细节。
2025-12-22 08:00:00
1665
原创 JWorker——一套简单易用的基于鸿蒙 Worker 的双向 RPC 通讯机制
这种情况下需要控制好 Worker 的关闭顺序,应该让项目的主 Worker 通知子 Worker 进行关闭他创建的子 Worker ,然后在关闭自身。无论是 “主 Worker 主动调用子 Worker 方法”,还是 “子 Worker 主动调用主 Worker 方法”,都是使用 Channel 的。JWorker 是基于鸿蒙 Worker 封装的一套 RPC 通讯机制,所以在正式使用之前需要先添加和配置 Worker 的 ets 文件。可以在子 Worker 需要创建子 Worker 的地方调用。
2025-12-15 08:32:12
565
原创 JHandler——一套简单易用的 C++ 事件循环机制
放入的事件消息,需要开发者继承编写自定义事件处理的Handler进行接收处理。在重写的方法中接收放入的事件消息,编写相应业务的逻辑。// 定义事件消息 what// 定义 Handlerprivate:public:// 此处接收 Message 编写自己的业务逻辑。
2025-11-24 08:00:00
694
原创 GLSL ES 数据类型
GLSL (OpenGL Shading Language) 是一种面向过程高级着色语言,用于图形渲染编程。使用 GLSL 进行编写顶点着色器和片元着色器,编写两种着色器的语法上没有差异。GLSL 是基于 C/C++ 基本语法和流程控制的语言,但不支持:双精度浮点数(double)、字节型(byte)、短整型(short)、长整型(long),而且取消联合体(union)、枚举(enum)。增加了向量(vec) 、矩阵(mat)类型。
2025-05-13 08:01:06
961
原创 Hello OpenGL ES! 启航!
分享理论知识和相应的 API 使用,以及 EGL 环境搭建等,并结合例子进行展示。在 Android、iOS、鸿蒙、mac 和 windows 多个平台上运行同一套底层代码,达到一处编写多端使用。分享期间会不断的完善 EglBox 项目,使其满足日常开发,在需要用到 GL 时,可以开箱即用。基于 OpenGL ES 封装一些好玩的项目,例如:相机、音视频播放、裁剪工具等。话不多说,开始属于 “OpenGL ES” 的 Hello World 吧!OpenGL ES 渲染管线由 GPU 内部。
2025-05-07 23:13:11
890
原创 C++ 与 Lua 的协程交互
Lua 语言不支持真正的多线程,即不支持共享内存的抢占式线程。这样的模式能减少一些多线程的问题。多线程的问题源于线程抢占和共享内存,而如果非抢占式线程或者不使用共享内存则能避免多线程问题,Lua 同时支持这两种方案。Lua 语言的线程是协作式的,即协程,可以避免因不可预知的线程切换带来的问题。Lua 状态间内存不共享,所以各个状态相互独立运行,可以并行操作。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。
2024-02-09 13:37:47
1596
原创 Lua 中使用 C 语言的用户自定义类型——userdata
经过之前的文章分享,我们已经知道如何通过扩展函数来扩展 Lua。但这里涉及到一个问题,Lua 脚本中如何使用 C/C++ 中的类型,如何像操作对象一样操作 C/C++ 类型的实例。解决这一问题就需要用到 userdata 类型(用户数据类型)。完全用户数据(full userdata)轻量级用户数据(light userdata)Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。
2024-02-08 11:37:04
1445
原创 C 函数中如何保存 Lua 的数据
在前面的文章中,C 函数操作的数据的生命周期都是在该函数执行期间。C 语言中无法保存普通的 Lua 值。如果 Lua 库函数中使用了全局变量或静态变量来保存一些数据,会导致该库在多个 lua_State 中使用受到约束。(因为每个 lua_State 间是相互独立的,而 C 函数中使用的全局变量和静态变量却是共用的,这里会出现数据混乱问题。注册表上值经过前面文章的学习,可以知道 Lua 内部存储 “非局部数据” ,则通过 “全局变量” 和 “非局部变量”。
2023-12-20 14:11:58
1185
原创 Lua 中编写 C 函数的一些便捷技巧
使用 Lua 时,在编写 C/C++ 函数经常需要对栈进行交互,而这中间更多的操作和数组、字符串相关。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-12-19 14:20:15
1100
原创 Lua 调用 C 模块中的函数
在之前 “Lua 模块与包” 的文章中,介绍了 Lua 通过require是如何引入一个模块的,其中 C 模块并未展开分享。今天就分享如何构建和使用一个 C 模块作为 Lua 的引入模块。Lua 通过注册 C/C++ 函数,进行感知 C/C++ 函数。一旦 C/C++ 函数用 Lua 表示和存储,Lua 就会通过对其地址的直接引用来调用,Lua 对这些 C/C++ 函数的调用不再依赖于函数名、包的位置以及可见性规则。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)
2023-11-27 09:06:13
822
原创 Lua 调用 C++ 函数
从前面分享的 “C++ 调用 Lua 函数” 文章知道,C/C++ 调用 Lua 函数时,是需要按照规则,将参数和函数压入栈中,然后通过lua_pcall或lua_call调用,最终再通过栈获取 Lua 返回的值。同样 “Lua 调用 C++ 函数” 也需要遵循一定规则,而不是所有的 C/C++ 函数均可以进行调用。需要将 C/C++ 函数进行注册,将函数地址提供给 Lua 进行调用。交互过程同样使用了与 C/C++ 调用 Lua 函数时相同类型的栈。
2023-11-21 09:52:52
347
原创 C++ 调用 Lua 函数
Lua 作为一门脚本语言,可以作为 “配置文件”、“动态逻辑脚本” 等角色作用于宿主程序。1. Lua 会处理语法细节,后续维护简单,并且可以有注释。2. 可以编写逻辑,达到复杂的配置。如果我们的程序需要进行一些 “下发配置” 时,一般会考虑选择 “json”、“文件” 等形式。但是如果 “配置” 内容较为复杂,则可以考虑 Lua 了,具体可以查看以下分享。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。
2023-11-20 14:55:07
1292
原创 C++ 与 Lua 交互内存分配
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-11-17 10:18:33
387
原创 C++ 与 Lua 交互异常处理
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-11-16 14:25:06
592
原创 C++ 与 Lua 数据交互载体——栈
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-10-18 17:30:40
381
原创 C++ 集成 Lua
C API 包括读写 Lua 全局变量的函数、调用 Lua 函数的函数、运行 Lua 代码段的函数、以及注册 C 函数(用于后面可以被 Lua 代码调用)的函数等。通过 C API 就可以打通了C 调用 Lua以及Lua 调用 C的渠道。如果是使用 C 语言的话,则直接使用以下进行引用 Lua 头文件如果使用 C++ 则需要嵌套 extern ,或是直接引用lua.hpp// 或是使用 lua.hpp其实 lua.hpp 内部也就是用 extern 进行嵌套这些头文件。Github传送门。
2023-10-16 08:33:45
409
原创 Lua 调试库( debug )
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-10-15 08:20:48
2624
原创 Lua 协程
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-10-14 21:36:31
285
原创 Lua 垃圾回收机制
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-10-13 09:54:26
991
原创 Lua 环境(_G 和 _ENV)
Lua 是动态语言,无法区分常量和变量。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-09-15 23:19:17
2410
原创 Lua 面向对象
Lua 中一张表 table 就是一个对象(注意不是类,是对象表和对象都可以拥有状态表和对象都拥有一个与其值无关的标识(self)两个具有相同值的对象是两个不同的对象,而一个对象可以具有多个不同的值表和对象一样,具有与创建者和被创建者位置无关的生命周期Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-09-13 10:30:47
307
原创 Lua 元表和元方法
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-09-11 07:32:46
281
原创 Lua 模块与包
模块就是一些代码(可以是 Lua 编写的,也可以是 C 语言编写的),这些代码可以通过函数require加载,然后创建和返回一个表,这个表就类似命名空间。所有的标准库都是模块,例如mathstring模块使用表来承载模块,有很显著的优点,可以像操作普通表一样操作模块,而且能利用 Lua 语言的所有功能实现额外的功能。例如引入math模块-- 两种书写方式都可以使用-- sin 使用的是弧度,不是角度也可以直接引入模块中的一个函数,例如以下代码。
2023-09-07 09:38:12
997
原创 Lua 迭代器
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-09-06 07:00:00
472
原创 Lua 编译执行和错误处理
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-08-23 07:28:40
1659
原创 Lua 数据文件和序列化
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-08-22 09:12:11
574
原创 Lua 数据结构
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-08-21 10:00:20
381
原创 Lua 位和字节
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-08-17 23:06:51
2502
原创 Lua 日期和时间
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-08-16 08:00:00
3552
原创 Lua 模式匹配
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)如果觉得本篇博文对你有所启发或是解决了困惑,。公众号搜索 “江澎涌”,更多优质文章会第一时间分享与你。
2023-08-15 13:13:40
674
原创 Lua 闭包
因为函数在 Lua 中与其他类型具有同等权限,所以也可以 table 中定义。第一种方式,用了匿名函数进行定义,只是归属至表Lib1 = {}endend第二种方式,也可以使用表构造器的一种方式(记录式)创建Lib2 = {end,end第三种方式,只是用了常规的函数定义Lib3 = {}endendLua 中可以给一个变量重新定义一个新的函数,也可以给一个预定义函数重新定义函数。例如,我们可以将 sin 函数的参数从原来的 弧度 单位改为 角度 单位。
2023-08-12 21:36:34
1753
原创 Lua 数据类型 - nil
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)公众号搜索 “江澎涌” 可以第一时间获取到后续文章。
2023-08-11 00:20:43
429
原创 Lua 数据类型 —— 字符串
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)公众号搜索 “江澎涌” 可以第一时间获取到后续文章。
2023-08-10 23:03:40
980
原创 Lua 数据类型 —— 函数
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)公众号搜索 “江澎涌” 可以更快的获取到后续的更新文章。
2023-08-10 12:50:32
489
原创 Lua 数据类型 —— 表
表永远是匿名的,表本身和保存表的变量之间没有固定关系。对于一个表而言,当程序不再有变量指向他时,垃圾收集器会最终删除这个表并重用其占用的内存。Lua 不会进行隐藏拷贝或创建新表,操作的都是指向表的指针。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)公众号搜索 “江澎涌” 可以更快的获取到后续的更新文章。
2023-08-09 09:04:57
591
原创 Lua 数据类型 —— 数值
Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)公众号搜索 “江澎涌” 可以更快的获取到后续的更新文章。
2023-08-07 23:20:43
1129
原创 Lua 数据类型 —— boolean
lua 中只有 false 和 nil 表示假,其他都是表示真。数字 0 和空字符串也表示真。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)公众号搜索 “江澎涌” 可以更快的获取到后续的更新文章。
2023-08-06 23:04:25
950
原创 Lua 使用 —— IO 操作
Lua 语言是以一个脚本存在,所以他自身不会提供太多和外部交互的机制。需要交互则由宿主提供或是由外部库。接下来分享下如何使用以 iso c 作为宿主,进行标准库的 io 操作。Github传送门(如果对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)本章相关代码传送门公众号搜索 “江澎涌” 可以更快的获取到后续的更新文章。
2023-08-06 22:30:27
1957
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅