使用require和dofile将lua5.2文件编译为一个文件

时间:2018-02-23 08:53:56

标签: c lua luac

我可以将我的所有文件编译为一个然后从C执行。在我的lua文件中,我使用require和dofile函数。当我尝试使用luac进行编译然后我想执行编译的文件时,它将无法找到我在编译文件中构建的模块。我认为包含lua文件通过require和dofile函数luac编译器进程就像javascript编译器那样。简单来说,Javascript编译器将导入文件添加到一个。

当你为app发布一个文件中的lua脚本时,这是一个好习惯吗?因为我有一些带有lua脚本的目录,当我发布一个版本时,我必须拥有所有带有二进制文件的lua文件。

1 个答案:

答案 0 :(得分:0)

luac不是一个打包工具,而只是一个编译器。它会将您提供的所有内容(只要它是有效的Lua)编译成Lua字节码

如果您需要将所有内容都放在一个文件中并希望使用require包含模块,则必须稍微修改源文件,以便require知道在内存中找到这些模块的位置

只需将其放在所有Lua模块文件的末尾:

package.loaded["<yourmodnamehere>"] = yourmodreturnvalue

然后在你的Lua初始化后,只需requireluaL_dofile你的组合Lua。

无论您使用dofile做什么,只需将代码重写为函数即可。