当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《从C++调用Lua表中的函数》经验,为你挑选了1个好方法。

我有一个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调用表中的chew函数bannana,传递一个参数.

既然CPerson是用C++实现的,那么Eat()假设CPerson类已经有一个Lua状态指针,需要进行哪些更改?

Edit1:我不想知道如何将C++类绑定到Lua,我已经有SWIG为我做这个,我想知道如何从C++中调用Lua表中的Lua函数.

EDIT2:所述CPerson类和bannana表,都是通用的示例,可以假设的是,CPerson类已经有一个LuaState指针/引用,并且所述的函数签名Eat方法可以由人应答而改变.



1> uroc..:

忽略任何错误检查......

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

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有