代码之家  ›  专栏  ›  技术社区  ›  Tom J Nowell

从C++中调用LUA表中的函数

  •  9
  • Tom J Nowell  · 技术社区  · 15 年前

    例如,我有一个 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 表,传递参数。

    自从 科曼 在C++中实现,需要实现哪些更改 Eat() 假设 个人 类已具有Lua状态指针?

    Eddi1: 我不想知道如何将C++类绑定到Lua,我已经有了Sigg来为我这样做,我想知道如何从Lua表中调用Lua函数,从C++。

    编辑2: 这个 科曼 等级和 班纳纳 表,都是一般的例子,可以假定 科曼 类已具有LuaState指针/引用,并且 Eat 方法可以由应答者更改。

    2 回复  |  直到 15 年前
        1
  •  10
  •   uroc    15 年前

    忽略任何错误检查…

    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);
    
        2
  •  -1
  •   Peter Mortensen icecrime    15 年前

    也许” Simpler Cpp Binding “会有帮助的。