lua_pcall(lua_State *L, int nargs, int nresults, int errfunc)
nargs:参数个数,nresults:返回值个数,errFunc:错误处理函数,0表示无,表示错误处理函数在栈中的索引
假如脚本为:
--test.lua
function test(a, b)
return a * b
end
lua_getfield(L, idx, "x") 从指定idx的表中取出指定元素x的值 并将其入栈
lua_setfield(L, idx, "x") 将栈顶的值赋给指定索引idx中的x,并pop栈顶
nargs:参数个数,nresults:返回值个数,errFunc:错误处理函数,0表示无,表示错误处理函数在栈中的索引
假如脚本为:
--test.lua
function test(a, b)
return a * b
end
luaL_loadfile(L, "test.lua");
然后先压
lua_getglobal(l,"test");
lua_pushnumber(L,1);
lua_pushnumber(L,2);lua_pcall(L,2,1,0);
此时栈顶的值为2.
如果运行时出错,lua_pcall会返回一个非零的结果,如果指定了错误处理函数会先调用错误处理函数,然后在将错误信息入栈,在将返回结果或者错误信息入栈之前会先将函数和参数从栈中移除。错误处理函数必须要在被调用函数和其参数入栈之前入栈。lua_getfield(L, idx, "x") 从指定idx的表中取出指定元素x的值 并将其入栈
lua_setfield(L, idx, "x") 将栈顶的值赋给指定索引idx中的x,并pop栈顶