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
 
那么,我们就可以定义个c函数来封装这个调用:
/* call a function ‘f‘ defined in Lua */
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的主要内容,如果未能解决你的问题,请参考以下文章

Qt能调用C语言函数吗

C语言调用Fortran

C语言的调用

C语言函数的运用及调用

C语言中怎样调用函数(举个例子)

C语言函数的运用和调用?