使用Lua C API调用table中的函数

使用Lua C API调用table中的函数,网上资料较多,几乎都有问题。第3行至关重要,不然参数和返回值乱套,调试了好几天才解决。记录一下帮助其他人出坑。

lua_getglobal(L, table);      // 获取表
lua_getfield(L, function);    // 获取函数
lua_pushvalue(L, -2);         // 获取表作为第一个参数,类似于c++中的this指针
lua_remove(L, -3);            // 移除最前面得到的表

// 压入其它参数
// ...

/**
* 调用函数
* 参数2是入参个数
* 参数3是返回值个数,不够会补nil,多余会忽略
*/
int ret = lua_pcall(L, nargs, 1, 0);
if(ret != LUA_OK) {
    std::cerr << lua_tostring(L, -1) << std::endl;
    lua_pop(L, 1);    // 错误出栈
    return;
}

// 返回值处理
// ...

lua_pop(L, 1);    // 返回值出栈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值