c++ - 如何在 C++ 和 Lua 之间共享数据?

标签 c++ lua

我一直在寻找演示如何使用 API 与 Lua 共享 C++ 对象的教程。大多数教程仅展示如何导出类。

我想从非常简单的开始,公开一个变量(例如 int myVar = 5),这样 Lua 中的更改将反射(reflect)在 C++ 应用程序中。

有没有人知道任何好的教程可以告诉我如何做到这一点?

最佳答案

仅使用 Lua API 公开变量以进行直接修改并不是那么简单。你必须创建 Lua 表或用户数据(分别使用 lua_newtablelua_newuserdata),然后创建一个元表 - 在你的情况下它应该有 __index__newindex 用于读取和写入访问的事件,在这些函数中,您应该按名称匹配您的变量。手动编写这没有乐趣。

也就是说,您不能在全局 Lua 级别公开变量——您应该使它成为表/用户数据的成员,这一点应该相当清楚。这看起来很像 Lua 中的类/对象,因此只公开一个变量并不比公开一个类简单。更重要的是,公开功能/方法要简单得多。所以阅读那些关于暴露类的教程肯定会有帮助。

但是只使用 Lua API 仍然没有乐趣。别误会我的意思,Lua API 很整洁也很棒,但是如果你有很多东西要公开,它就会变得非常乏味,你最终要么写很多无聊的重复代码来绑定(bind)你的类,要么写一些类似的东西为您自动执行此任务的工具(使用大量宏很可能是您的第一个想法,去过那里,做过;))。这样的工具已经存在,tolua++ , luabind可能还有很多其他人。

关于c++ - 如何在 C++ 和 Lua 之间共享数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1462359/

相关文章:

Lua string.gsub 里面的 string.gmatch?

c - Lua和C之间是什么关系?

c++ - 更新 DATETIME 导致 BB10 上的 sqlite 错误

c++ - C++11 标准库可以在没有同步的情况下使用内部静态常量变量吗?

c++ - 我正在做套接字程序,无法从客户端接收消息

c - 从 C 访问 lightuserdata

lua - 如何检查lua表中嵌套的bool

docker - 无法访问 rewrite_by_lua_block 中的 ngx.var

c++ - 如何为芯片 ATtiny85 编译 cpp 文件

c++ - 是否有与 Visual Studio 的 __declspec(novtable) 等效的 g++?