将所有内容保存在一个单独的lua字节码块中?
我已将lua与一个字节码块嵌入到一个用C编写的项目中.
现在,当我通过添加.lua文件来扩展我的lua代码库时,有没有办法将这个代码保存在一个字节码块中? (我知道如何加载多个字节码块,但是加载一个单独的块,然后忘记粘贴代码似乎很舒服) 我试图使用文本包含,但在Lua中似乎没有关键字. 还有没有办法组合字节码文件,是吗?我的意思是,当创建一个字节码文件时,“require”命令将所有这些文件的代码添加到一个字节码文件中. PS:Michal Kottman的回答是为Lua做的,这是我要求的.我认为Lua和LuaJIT将以同样的方式工作.他们没有要将多个.lua文件合并到一个LuaJIT字节码文件中,应该是一个 >使用“LuaJIT -b”(似乎不工作) 解决方法
您可以使用luac将多个文件合并到一个文件中.运行时,源文件中的所有块都按照已添加到编译文件的顺序执行:
$echo "x=1" > l1.lua $echo "y=2" > l2.lua $echo "print(x,y)" > l3.lua $luac -o run.luac l1.lua l2.lua l3.lua $lua run.luac 1 2 您可以使用 请注意,您可以将编译文件的内容作为字符串嵌入到项目中,无需将其保存在外部文件中. LuaJIT 2的更新 如您所见,您可以使用Lua Compiler in Lua获取可以如前所述加载的组合文件.这是一个简化版本,输出到stdout: -- http://lua-users.org/wiki/LuaCompilerInLua -- compile the input file(s) passed as arguments and output them combined to stdout local chunk = {} for _,file in ipairs(arg) do chunk[#chunk + 1] = assert(loadfile(file)) end if #chunk == 1 then chunk = chunk[1] else -- combine multiple input files into a single chunk for i,func in ipairs(chunk) do chunk[i] = ("loadstring%q(...);"):format(string.dump(func)) end chunk = assert(loadstring(table.concat(chunk))) end io.write(string.dump(chunk)) 对于上一个示例,您可以使用它,如下所示: $luajit combine.lua l1.lua l2.lua l3.lua > out.ljc $luajit out.ljc 1 2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |