如何在C++和Lua之间来回传递大型结构

Dun*_*nni 5 c++ lua

我正在考虑将Lua嵌入到我正在开发的C++应用程序中.我的目的是使用Lua编写为某些给定输入执行的有序操作的脚本,即.在c ++程序中收到一个新的工作项,将细节传递给Lua后端,Lua调用c ++来执行必要的工作,返回完成的结果.

涉及的主要数据结构是一个大型(大约80多个成员)struct.我(非常)是Lua的新手,我不确定如何将它传递给我的主机应用程序和嵌入式Lua状态.

到目前为止,我看到我的选择:

a)当与C++和Lua交叉时,将所有单个数据成员推送/弹出(听起来很混乱).

b)构造一个表并填充值,然后将其放入/关闭堆栈(稍微清洁一点).

c)把它传递给userdata(轻/重?)(我对此很粗略,不知道我是否可以从Lua那边访问它以查询必要的操作).

任何指导将不胜感激.

Phi*_*Lho 4

如果我没记错的话,light userdata 实际上只是一个指针。它们都共享相同的元表。它们主要用于传递 C 数据的地址。
如果您必须从 Lua 端访问完整的用户数据,那么完整的用户数据可能更接近您的需要。例如,他们的元表允许您像访问常规 Lua 表一样访问它。

您可能还对用于在 Lua 5.1 中将数据与 C 结构相互转换的Roberto 库感兴趣。或不。取决于您的需求...:-)