在c或cpp中调用Lua脚本中的函数
1.Lua函数也是一种数据类型。要调用Lua的函数,首先要把函数放到堆栈上。
2.把函数所需要的参数放到堆栈上。
3.调用lua_call调用函数。
4.函数调用后,会把参数弹出,然后把函数返回值放到堆栈上。
5.在main.cpp中
double a,b,ave;
a=10.09;
b=31.123;
lua_getglobal(L,"average"); //把函数放到堆栈上
if (lua_isfunction(L,-1) == 1) //判断栈顶元素是不是函数
{
lua_pushnumber(L,a); //把a放到栈顶
lua_pushnumber(L,b); //把b放到栈顶
lua_call(L,2,1);
//调用average函数
//第二个参数是被放到堆栈上的参数个数
//第三个参数是函数返回参数的个数(lua函数可以返回多个值)
//调用函数后,参数会自动弹出,并把函数返回值放在栈上
ave=lua_tonumber(L,-1);
}
lua_pop(L,1);
cout<<"a和b平均值为"<<ave<<endl;
6.在test.lua中
function average(a,b)
return (a+b)/2
end;