【问题标题】:How can I access c++ class member function from lua script?如何从 lua 脚本访问 c++ 类成员函数?
【发布时间】:2011-08-11 15:49:05
【问题描述】:

我想我想解决的问题对你们大多数人来说都是一个简单的问题:) 假设我有一个类Node,它有一个成员函数setPosition(float x, float y, float z)。我希望能够在 lua 中定义类 Node 的变量,然后能够使用 setPosition() 函数也形成 Lua。 我知道 Lua 更适合 C 而不是 C++ 存在一些问题,并且 C++ 类也存在问题,但我也知道它是可以实现的。

【问题讨论】:

    标签: c++ scripting lua


    【解决方案1】:

    我会为此使用Luabind。有了它,您可以轻松地绑定 C++ 类,以便在 Lua 中创建、访问和修改它们。您用 C++ 编写的代码可能大致如下所示:

    module(L) [
        class_<Node>
            .def(constructor<>)
            .def("setPosition", &Node::setPosition)
    ];
    

    那么你就可以在 Lua 中这样说:

    node = Node()
    node:setPosition(x, y, z)
    

    您还可以进行绑定,使 Lua 看起来更自然一些,并且可以支持以下内容:

    node1 = Node(x, y, z)
    node2 = Node()
    node2.position = { x, y, z }
    

    【讨论】:

    • 感谢您的回复。我已经在我的项目中构建并包含了 luabind,但问题是我在 C++ 中有我的“游戏引擎”,我已经定义了我的 RenderSystem(变量)并且我没有访问它并调用这样的东西:@987654325 @ 我已经知道如何使用 Luabind 公开一个类,但我该如何实现呢?
    • 然后你应该为RenderSystem类和它的createBody函数做一个绑定(也许使用Luabind),然后你可以从Lua调用它并对结果进行操作。还是我误解了您要查找的内容?
    猜你喜欢
    • 2018-08-31
    • 2015-12-06
    • 2010-11-15
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2014-07-29
    • 1970-01-01
    相关资源
    最近更新 更多