如何将Lua模块的整个状态转储到磁盘上并在C/C++中后续加载?

我正试图将Lua脚本作为我的C++程序的扩展语言。我想知道是否可以加载模块脚本,执行一些函数,然后将当前模块的状态(或堆栈?)转储到磁盘上。稍后我可以从中加载并恢复执行吗?这是使用Lua的可用C接口可能实现的吗?

谢谢!


为了使基于评论更清晰,请添加更多上下文。

假设我的模块有一堆变量(主要是表)和函数。这些函数将改变表的值。

我的目标是在一些函数调用后,把这些变量(状态)转储(序列化)到磁盘上,并以后从中加载。实际上,我不需要转储这些函数。

原文链接 https://stackoverflow.com/questions/70464530

点赞
stackoverflow用户7509065
stackoverflow用户7509065

在 PUC-Rio 的标准 Lua 实现中,没有办法做到这一点,但是有一些替代实现支持它。其中一个实现是 Eris,正是为了这个目的而被 OpenComputers Minecraft 模组使用。只需将您的代码运行在协程中,然后 yield 和持久化线程即可。

2021-12-23 19:09:48