我一直在寻找演示如何使用 API 与 Lua 共享 C++ 对象的教程。大多数教程仅展示如何导出类。
我想从非常简单的开始,公开一个变量(例如 int myVar = 5
),这样 Lua 中的更改将反射(reflect)在 C++ 应用程序中。
有没有人知道任何好的教程可以告诉我如何做到这一点?
最佳答案
仅使用 Lua API 公开变量以进行直接修改并不是那么简单。你必须创建 Lua 表或用户数据(分别使用 lua_newtable 或 lua_newuserdata),然后创建一个元表 - 在你的情况下它应该有 __index 和 __newindex 用于读取和写入访问的事件,在这些函数中,您应该按名称匹配您的变量。手动编写这没有乐趣。
也就是说,您不能在全局 Lua 级别公开变量——您应该使它成为表/用户数据的成员,这一点应该相当清楚。这看起来很像 Lua 中的类/对象,因此只公开一个变量并不比公开一个类简单。更重要的是,公开功能/方法要简单得多。所以阅读那些关于暴露类的教程肯定会有帮助。
但是只使用 Lua API 仍然没有乐趣。别误会我的意思,Lua API 很整洁也很棒,但是如果你有很多东西要公开,它就会变得非常乏味,你最终要么写很多无聊的重复代码来绑定(bind)你的类,要么写一些类似的东西为您自动执行此任务的工具(使用大量宏很可能是您的第一个想法,去过那里,做过;))。这样的工具已经存在,tolua++ , luabind可能还有很多其他人。
关于c++ - 如何在 C++ 和 Lua 之间共享数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1462359/