C语言调用lua
Posted qiye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言调用lua相关的知识,希望对你有一定的参考价值。
在lua API中,调用一个函数的步骤很简单:
1.压入你要调用的函数,使用lua_getglobal。
2.压入调用参数。
3.使用lua_pcall
4.从栈中弹出结果。
举例说明,假设你有这么一个lua函数:
function f (x, y)
return (x^2 * math.sin(y))/(1 - x)
end
return (x^2 * math.sin(y))/(1 - x)
end
那么,我们就可以定义个c函数来封装这个调用:
/* call a function ‘f‘ defined in Lua */
double f (double x, double y)
double f (double x, double y)
{
double z;lua_getglobal(L, "f");lua_pushnumber(L, x);lua_pushnumber(L, y);/* do the call (2 arguments, 1 result) */if (lua_pcall(L, 2, 1, 0) != 0)error(L, "error running function ‘f‘: %s",lua_tostring(L, -1));if (!lua_isnumber(L, -1))error(L, "function ‘f‘ must return a number");z = lua_tonumber(L, -1);lua_pop(L, 1);return z;
}
lua_pcall在压入结果的之前,会将函数,和参数弹出,如果返回多个结果,第一个最先压入。如果lua_pcall运行出错,那么会返回个非0值。
以上是关于C语言调用lua的主要内容,如果未能解决你的问题,请参考以下文章