有没有办法可以编译一个脚本,其中除标准Lua库之外的所有内容都是静态链接的?
我在我的C程序中嵌入了一个脚本,该功能在模块之间分开,然后在主模块中加载。我想将主模块编译成Lua字节码,将其转换为十六进制代码,这样就可以很容易地存储在我的程序中。问题是主模块仍然需要其他模块的源代码存在于LUA_PATH
或当前目录中。有没有办法如何覆盖这种行为?当然,我可以简单地将所有文件(在编译期间自动合并)合并到一个lua源文件中,但由于我是Lua的开头,我想知道是否有其他解决方案可以解决这个问题,也许可以扩展我的视野
我在看luac
和luajit
,但我无法让他们做我需要的事。
任何提示?
答案 0 :(得分:2)
像srlua这样的工具可能有所帮助。您也可以查看this presentation on luawrap和this discussion了解相关信息。
答案 1 :(得分:0)
如果你在函数和值中迭代加载的lua_state,你可以在C中创建一个as-if lua表示。
这可以序列化为lua
形式,然后编译luac。
您必须忽略C
绑定函数和userdata。
您需要走元数据表。
通过更改加载器,您可以拥有一个资源,该资源按名称包含每个lua文件,并将加载请求视为搜索并读取资源。