
Lua
文章平均质量分 59
Lua脚本使用
猿来是码农
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Lua for 的使用
Lua 中的 for 循环有两种形式:数值型遍历和泛型遍历。原创 2023-03-25 16:28:06 · 1291 阅读 · 0 评论 -
Lua require 函数使用
从 Lua 的用户文档中我们知道 require("modName") 函数是用来加载模块的,而如果这个modName已经用require 加载过的,再调用require时,将直接返回模块的值。因为函数首先查找表, 检测 modName 是否被加载过, 如果被加载过了,直接返回 package.loaded[modName] 的值。原创 2023-03-24 22:09:53 · 2439 阅读 · 0 评论 -
lua_pcall 函数详解
2)lua_pcall 函数指定处理函数在栈中的 index = -4,这里为什么是 -4 呢?有如下代码,需要调用 lua 里的 parseData 函数,但这个函数里有一个错误,即:COM.lua_func(12, 23, 45);msgh: 如果是 0 则表示要调用的函数如果出错了,则出错信息返回压入栈顶,非 0 时,则表示处理出错的函数在栈中的 index。nresults: 返回值个数,如果有返回值,则 lua 会按这个数量将返回值压入栈中。nargs: 表示参数个数,即你向栈中压入的参数个数。原创 2022-09-07 09:46:51 · 10787 阅读 · 0 评论 -
lua_settable 函数详解
上一篇文章讲到 lua_gettable() 函数,是获取table项的函数,而 lua_settable() 则是设置的函数,而操作的 key 和 value 在理解上应该是一样的:作一个等价于 t[k] = v 的操作,这里 t 是一个给定有效索引index处的值,v 指栈顶的值,而 k 是栈顶之下的那个值。这个函数会把键和值都从栈中弹出。函数调用后,lua_var 变量值已经被修改。原创 2022-09-06 11:16:38 · 2606 阅读 · 0 评论 -
lua_gettable 函数详解
将要找到对象的名称压入栈顶,记住,此时字符串 "AtmCtrl" 在栈顶位置,而第一步中的 Global 值已经在 "AtmCtrl" 的下面,即 "AtmCtrl" 的 index 为 -1, Global 的值的 index 为 -2。总结:lua_gettable() 使用的要点是时刻在脑子里有栈的数据结构,同时要记住栈中元素的位置以及类型,这样不管元素是什么类型,才能压入正确的 key,并取得正确的 t[k] 的值。index: 这个并不好理解,这个index所指向的值,就是你想要获取的对象。原创 2022-09-05 15:48:15 · 3808 阅读 · 0 评论 -
Lua 开发环境安装与 C/C++ 开发
原因为 这些接口都是纯 C 写的,但我们这个代码是 C++,这样是找不到这些符号的,必须将这些接口添加 extern "C" 声明,告诉编译器这些接口是 C 接口,不能按 C++ 的方式进行查找。要开发与 Lua 交互的 C/C++ 程序,则必须有相关的头文件,以及 Lua库。编译 Lua 库可以下载源码进行编译,默认编译出来是静态库,在开发 C/C++ 相关程序时,加链接 -llua 即可。很快就能编译出 liblua.a 库,在解压目录src下。下载完成后,进行解压,然后就可以进行编译了。原创 2022-09-05 13:55:26 · 675 阅读 · 0 评论 -
Lua 错误之 attempt to index a function value
在学习Lua require关键字时,出现了一个错误“/usr/local/bin/lua: ./require_func.lua:4: attempt to index a function value (local 'mytest')”,如:两个脚本内容如下testRequire.luaprint("load file testRequest.lua")function testRq(x) print("in file testRequire.lua, input para原创 2021-12-14 22:45:29 · 18206 阅读 · 0 评论 -
Lua 位操作库 bit.so编译安装
Lua的算术位操作,如与,或,非等,需要依赖一个c扩展模块:Lua BitOp1,下载源码:http://bitop.luajit.org/download.html2,解压及编译:make编译失败,缺少一个宏定义,查看源码后,该宏应该是定义Lua的number类型为哪种类型,可以为double, 或int,或为float。我这里在Makefile里添加-DLUA_NUMBER_DOUBLE进行编译。3,拷贝bit.somake install 完成,库已经拷贝到默认库目录下原创 2021-12-14 22:04:39 · 1012 阅读 · 0 评论 -
Lua 脚本调用 C 函数
上篇说到 C 程序里调用Lua 函数,此篇讲Lua 脚本里调用C 函数。Lua要调用C 程序里的函数,这些函数必须有同样的原型:typedef int (*LuaFunc)(lua_State *L);结合工作上的业务来实现一个简单的Lua 调用 C 函数的例子,业务是上这样的,有一便携式设备向我们的设备发送数据,通过串口发出,经过232转换485,接入我们的设备,我们的应原创 2017-09-09 08:58:28 · 864 阅读 · 0 评论 -
C/C++ 调用 Lua 函数(非全局函数)
C/C++ 调用 Lua 函数有两种:1, Lua 脚本里,没有local 修饰的函数,即为全局函数2, Lua 脚本里,有local 修饰的函数,即为局部函数其实调用函数和取Lua里的变量是一样的,网上讲得最多的是调用全局函数,这里主要讲调用非全局函数(或是变量)。如有脚本: test.lua--定义了一个全局表COM = {}--定义原创 2017-09-09 08:56:25 · 517 阅读 · 2 评论