我正在考虑将Lua嵌入到我正在开发的C++应用程序中.我的目的是使用Lua编写为某些给定输入执行的有序操作的脚本,即.在c ++程序中收到一个新的工作项,将细节传递给Lua后端,Lua调用c ++来执行必要的工作,返回完成的结果.
涉及的主要数据结构是一个大型(大约80多个成员)struct
.我(非常)是Lua的新手,我不确定如何将它传递给我的主机应用程序和嵌入式Lua状态.
到目前为止,我看到我的选择:
a)当与C++和Lua交叉时,将所有单个数据成员推送/弹出(听起来很混乱).
b)构造一个表并填充值,然后将其放入/关闭堆栈(稍微清洁一点).
c)把它传递给userdata
(轻/重?)(我对此很粗略,不知道我是否可以从Lua那边访问它以查询必要的操作).
任何指导将不胜感激.
如果我没记错的话,light userdata 实际上只是一个指针。它们都共享相同的元表。它们主要用于传递 C 数据的地址。
如果您必须从 Lua 端访问完整的用户数据,那么完整的用户数据可能更接近您的需要。例如,他们的元表允许您像访问常规 Lua 表一样访问它。
您可能还对用于在 Lua 5.1 中将数据与 C 结构相互转换的Roberto 库感兴趣。或不。取决于您的需求...:-)
归档时间: |
|
查看次数: |
3575 次 |
最近记录: |