Lua与C——调用Lua函数(三)

本文介绍如何在C程序中调用Lua定义的函数,包括将函数压栈、设置参数及使用lua_pcall执行调用的过程。
摘要由CSDN通过智能技术生成

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);



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值