lua底层采用C语言实现,在设计时就考虑到了C和lua的互操作性,在某些场景下可以使用lua来提高c程序的灵活性,在使用lua的时候也可以用过c来提高性能。 相信了解 redis 和openresty的小伙伴们都知道 lua 代码可以嵌入这两种程序中运行,极大的提高了软件的扩展性;尤其是 openresty 中,通过使用 lua 我们可以很快速(相比...
1. 常见Lua相关的C API 压入元素 // cpp void lua_pushnil(lua_State *L); void lua_pushboolean(lua_State *L, int bool); void lua_pushnumber(lua_State *L, lua_Number n); void lua_pushinteger(lua_State *L, lua_Integer n); void lua_pushlstring(lua_State *L, const char* s, size...
Lua与C语言可以通过Lua的C API来进行结合使用。通过Lua的C API,可以在C语言中调用Lua的函数、读取Lua的变量、创建Lua的数据结构等操作。下面是一个简单的示例: 首先,在C语言中创建一个Lua的解释器: #include <lua.h> #include <lauxlib.h> #include <lualib.h> int main() { lua_State *L = luaL_ne...
c 使用lua 示例 #include<stdio.h>#include<string.h>#include<lua.h>#include<lauxlib.h>#include<lualib.h>staticintsay_hello(lua_State *L){constchar*s =lua_tostring(L,1);printf("hell,%s\n",s);return0; }intmain(void){ lua_State *L =luaL_newstate();;luaL_openlibs(L);//写入全局...
lua_close(L); return 0; } 在上面的例子中,我们使用了luaL_dostring函数来执行一个简单的Lua脚本。这个脚本只是输出了一个Hello, world!的字符串。 C语言向Lua传递参数 当我们需要将C语言中的参数传递给Lua脚本时,我们可以使用lua_push*函数系列将其压入到栈中。这个函数系列包括了很多不同的函数,用于不同类...
最近在学习使用Lua,也通过基本的语法知识完成了公司的一个关于配置文件参数合法性检查的小任务。虽然任务完成了,但对于一些函数的调用目的还是搞不明白,这两天再次重看了Manual Reference,稍微梳理出了一点眉目,记录在此。 首先看一段小小小程序 functionprintmsg()print("hello world")end ...
接下将是C代码调用Lua数据的一些操作: 加载一个Lua文件:lua_State *luaL_newstate (void); 创建一个新的 Lua 状态机,接下来所有的C与Lua交互操作都要使用这个状态机进行。 如果创建失败,返回NULL。 void luaL_openlibs (lua_State *L); 打开指定状态机中的所有 Lua 标准库。打开Lua标准库的函数在lualib.h...
本文将介绍如何在C/C++里面操作Lua的数组和字符串类型,同时还会介绍如何在C/C++函数里面存储Lua状态(registry和upvalue),而registry在使用C/C++自定义类型时非常有用,可以方便地为userdata指定metatable。 C/C++操作Lua数组 Lua数组Overview 在Lua里面,数组只不过是key为整数的table而已。比如一个table为array = {12,...
下载地址和使用方法见:https://gitee.com/yzhengBTT/lua-windows 3、C环境中内嵌LUA执行LUA函数调用 这里我使用的C开发环境是:Eclipse C/C++配合MinGW。 移植很简单的,将lua源码除了lua.c和luac.c之外,其他源码加入到工程即可。 示例代码: ...
Lua C接口调用示例 lua是一门语法简单,效率很高的脚本语言,能够很方便的与C语言交互,很适合做胶水语言使用,本文内容有两部分,第一部分讲如何在C语言中调用lua,第二部分讲如何在lua中调用C语言模块。 1.在C语言中调用lua 在C语言中调用lua要用到lua提供的C语言接口,test.c示例代码如下,linux下编译指令:...