gpt4 book ai didi

c++ - 从 C++ 调用 Lua 表中的函数

转载 作者:可可西里 更新时间:2023-11-01 16:37:55 34 4
gpt4 key购买 nike

例如,我有一个 Lua表/对象:

bannana

而且这个 Lua 表中有一个名为 chew 的函数,它接受一个参数

bannana.chew(5)

我也用过SWIG , 并且有一个类 CPerson:

class CPerson {
public:
// ....
void Eat();
// ....
};

我可以从 Lua 获得这个对象的一个​​实例:

person = engine:getPerson()

我需要做的是下面的 Lua 代码:

person = engine:getPerson()
person:Eat(bannana)

person:eat 将调用 bannana 表中的 chew 函数,并传递一个参数。

由于 CPerson 是用 C++ 实现的,假设 CPerson 类已经有一个 Lua 状态指针,实现 Eat() 需要做哪些改变?

Edit1:我不想知道如何将 C++ 类绑定(bind)到 Lua,我已经有 SWIG 为我做这件事,我想知道如何在 Lua 表中调用 Lua 函数,从C++。

Edit2 CPerson 类和bannana 表,都是一般的例子,可以假设CPerson 类已经有一个 LuaState 指针/引用,Eat 方法的函数签名可以由回答者更改。

最佳答案

忽略任何错误检查...

lua_getglobal(L, "banana"); // or get 'banana' from person:Eat()
lua_getfield(L, -1, "chew");
lua_pushinteger(L, 5);
lua_pcall(L, 1, 0, 0);

关于c++ - 从 C++ 调用 Lua 表中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1888672/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com