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里面,同样是把把栈最顶上的位置当作返回值)