
lua与c
文章平均质量分 76
Andrew_37
对自己学过的知识,进行整理总结。
展开
-
lua与c之间交互详解(三)
本篇主要讲解Lua是如何调用c的,Lua是宿主语言,c是附加语言,关于c如何调用Lua参考其他两篇。Lua调用c有几种不同方式,这里只讲解最常用的一种:将c模块编译成so库,然后供Lua调用。gcc mylib.c -fPIC -shared -o mylib.so -I/usr/local/include/约定:c模块需提供luaopen_xxx接口,xxx与文件名必须一致,比如"mylib";还需提供一个注册数组(55-60行),该数组必须命名为luaL_Reg,每一项是{lua函数名,c函数名},转载 2021-05-14 14:43:40 · 241 阅读 · 0 评论 -
lua与c之间交互详解(一)
lua与c之间交互是通过“lua堆栈”通信的。不管是lua调用c还是c调用lua,都是通过操作lua堆栈实现的。顾名思义,lua堆栈也满足后进先出的特点,入栈/出栈都围绕栈顶进行的。与通用的栈不同的是,这个虚拟栈每个位置都对应一个索引,可以通过索引操作指定位置的数据。1代表栈底,向栈顶依次递增;-1代表栈顶,向栈底依次递减,如图。lua中类型在c中如何表示要实现c和lua之间的交互,先了解下lua中基本类型与c中类型怎么对应的。lua中有八种基本类型:nil、boolean、number、strin转载 2021-05-13 14:42:47 · 529 阅读 · 0 评论 -
lua与c之间交互详解(二)
本篇主要讲解下c如何调用Lua的,即c作为宿主语言,Lua为附加语言。c和Lua之间是通过Lua堆栈交互的,基本流程是:把元素入栈——从栈中弹出元素——处理——把结果入栈。关于Lua堆栈介绍以及Lua如何调用c参考其他两篇。加载运行Lua脚本通过luaL_newstate()创建一个状态机L,c与Lua之间交互的api的第一个参数几乎都是L,是因为可以创建多个状态机,调用api需指定在哪个状态机上操作。lua_close(L)关闭状态机。复制代码int main(int argc, char *转载 2021-05-13 14:47:04 · 684 阅读 · 0 评论