Lua:编译包含所有依赖项的脚本

有没有一种方式可以编译一个脚本,其中除了标准的Lua库之外,其他所有内容都静态链接?

我正在将一个脚本嵌入到我的C程序中,功能分解成模块,然后在主模块中加载。我想将主模块编译为Lua字节码,将其转换为十六进制码,以便可以轻松地存储在我的程序中。问题在于主模块仍然需要其他模块的源代码存在于LUA_PATH或当前目录中。有没有办法覆盖这种行为?当然,我可以将所有文件(在编译期间自动)合并为一个Lua源文件,但由于我对Lua还是一个初学者,我想知道是否有其他解决此问题的方法,并可能拓展我的视野。

我曾经看过luacluajit,但我无法让它们做我需要的事情。

有什么线索吗?

点赞
用户1442917
用户1442917

有像 srlua 这样的工具可能会有所帮助。您也可以查看 luawrap 的这个演示这个讨论 来获得想法。

2016-03-03 04:05:38
用户5129715
用户5129715

序列化 lua_state

如果你在 C 中遍历已加载的 lua_state 来获取函数和值,你就可以创建一个类似 lua 表示的形式。

然后将其序列化为 lua 格式,再使用 luac 编译。 需要忽略 C 绑定函数和用户数据。

需要遍历元表。

封装形式

通过更改加载器,您可以将每个 lua 文件按名称放入单个资源中,并将加载请求视为查找并在资源中进行读取。

2016-03-03 05:53:57