读书人

C跟lua的互相调用

发布时间: 2012-09-03 09:48:39 作者: rapoo

C和lua的互相调用

上代码,码农都喜欢上代码:

下面是main.c:

function l_ff(a, b)local c = mylib.c_add(a, b) + 1print ("in lua1: ", c)local d = mylib.c_step(c)print ("in lua2: ", d)return dend

说明

这些api的名字很怪异,常常没法从名字知道这个函数是做什么的。

lua_getglobal是从lua脚本里面取一个全局变量放到堆栈上(c和lua之间是通过虚拟的堆栈来互相沟通的)。

lua_pushnumber是把一个数字放到堆栈上。

lua_pcall是从当前堆栈进行函数调用。

lua_tonumber这个是把堆栈中的某个值作为int取出来(因为l_ff有返回值,因此堆栈最顶上就是函数的返回值)

在函数c_add里面,lua_pushnumber才是lua调用的返回值(在lua里面,同样是把把栈最顶上的位置当作返回值)


读书人网 >编程

热点推荐