菜鸟入门之lua与c++相互调用(包含多个demo)

本文详细介绍了C++与Lua之间的相互调用,包括luaL_dofile运行lua文件、设置和获取全局变量、处理lua表、调用lua函数以及让lua调用cpp函数计算平均值。通过实例代码解析了栈结构在两者交互中的作用。
摘要由CSDN通过智能技术生成

前两篇文章中,已经介绍了使用vs2010编译lua5.1源码生成lua.lib 和 vs项目中使用c++调用lua,可以保证demo在vs上运行起来了。这里再详细介绍下c++和lua之间的相互调用以及原理。

c++与lua直接的调用,实际上通过一个栈结构来传递数据,该栈结构栈顶的索引值为-1,向栈底方向索引值依次为-1 ,-2......栈顶索引为1.栈结构里可以放函数,表,字符串,整形等各种lua的基本数据。

一、在当前cpp目录下创建test.lua文件,用于与c++交互调用,代码如下:

print("hello world  from lua file")
table1 = {}
table1["dinner"] = "rice"
table1["hahha"] = "ri123ce"
gScreenW = 1280;
function getIntegerSumFuncs(a ,b)
<span style="white-space:pre">	</span>return a + b
end
avg ,sum = average(10 ,20 ,30 ,40 ,50)

二、先熟悉下lua常用的C语言API。

int luaL_dofile (lua_State *L, const char *filename);//运行lua文件,L是当前已经创建的栈结构。返回0,运行文件正常;返回1,代表出现异常。

void lua_setglobal (lua_State *L, const char *name);//从堆栈上弹出一个值,并将其设到全局变量 name 中

void lua_getglobal (lua_State *L, const char *name);//把全局变量 name 里的值压入堆栈,栈顶值为-1。

const char *lua_tostring (lua_State *L, int index);//在栈L的索引值为index处取值并转化成C字符串(lua_tointeger等类似)

void lua_settop (l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值