1

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

当您为应用程序发布将lua脚本放在一个文件中时,这是一种好习惯吗?因为我有一些带有 lua 脚本的目录,当我发布时,我必须拥有所有具有可读形式二进制文件的 lua 文件。

4

1 回答 1

0

luac不是一个打包工具,而只是一个编译器。它会将你提供给它的所有东西——只要它是有效的 Lua——编译成 Lua 字节码

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

简单地把它放在所有 Lua 模块文件的末尾:

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

然后在你的 Lua 初始化之后简单地require或你的组合 Lua。luaL_dofile

无论你用. 做什么dofile,将代码重写为函数可能更容易。

于 2018-02-24T07:23:30.277 回答