Lua允许在一个文本中定义函数,并且可以通过C语言来调用这个函数。
先将带调用的函数压栈,并压入函数的参数。然后是用lua_pcall进行实际调用。最后,将调用结果从战中弹出。
lua函数:
function add(x, y)
return x + y
end
/*--------- C Language--------*/
double add(lua_State *L, double num1, double num2)
{
double sum;
lua_getglobal(L, "add");
lua_pushnumeber(L, num1);
lua_pushnumber(L , num2);
if (lua_pcall(L, 2, 1, 0) !=0 ) //调用Lua的函数,第二个参数是函数的参数个数,第三个参数是函数结果个数
printf("error running function 'add':%s",lua_tostring(L, -1));
if (!lua_isnumber(L, -1)) {
printf("function 'f' must return a number");
}
sum = lua_tonumber(L, -1);
lua_pop(L, 1);
return sum;
}
lua_State*L =luaL_newstate();
int e = luaL_loadfile(L, "/Users/natsu/Code/luaTest/lua/test.lua");
if (e)
{
printf("load file");
}
int res = add(L, 3, 1);
printf("res= %f", res);