我可以将我的所有文件编译为一个然后从C执行。在我的lua文件中,我使用require和dofile函数。当我尝试使用luac进行编译然后我想执行编译的文件时,它将无法找到我在编译文件中构建的模块。我认为包含lua文件通过require和dofile函数luac编译器进程就像javascript编译器那样。简单来说,Javascript编译器将导入文件添加到一个。
当你为app发布一个文件中的lua脚本时,这是一个好习惯吗?因为我有一些带有lua脚本的目录,当我发布一个版本时,我必须拥有所有带有二进制文件的lua文件。
答案 0 :(得分:0)
luac
不是一个打包工具,而只是一个编译器。它会将您提供的所有内容(只要它是有效的Lua)编译成Lua字节码
如果您需要将所有内容都放在一个文件中并希望使用require
包含模块,则必须稍微修改源文件,以便require
知道在内存中找到这些模块的位置
只需将其放在所有Lua模块文件的末尾:
package.loaded["<yourmodnamehere>"] = yourmodreturnvalue
然后在你的Lua初始化后,只需require
或luaL_dofile
你的组合Lua。
无论您使用dofile
做什么,只需将代码重写为函数即可。