如何构建我的C ++项目以将所有Lua文件包含在一个可执行文件中?我不希望人们能够编辑Lua文件并改变游戏。
是否可能,是否符合道德标准?
答案 0 :(得分:2)
使用" embedded bytecode" LuaJIT的特点:
要在应用程序中静态嵌入模块的字节码,请生成目标文件,然后将其与应用程序链接。
require()尝试从导出的符号(在Windows上的* .exe或lua51.dll中)和package.cpath中的共享库中加载嵌入的字节码数据。
示例:
luajit -b test.lua test.obj # Generate object file
# Link test.obj with your application and load it with require("test")
答案 1 :(得分:1)
好吧,你想把所有Lua源都放到你的可执行文件中,所以你需要这个:
将文件名映射到Lua文件的方法:
char lua_files[]={
"filename1\0filecontents1",
"filename2\0filecontents2",
0,
};
这可以通过在构建时读取Lua文件目录的脚本自动创建 或者,它甚至可以预编译文件,因此您可以从嵌入的Lua库中删除解析器。
load
和一个包含找到的文件内容的字符串作为Lua字符串。package.searchers
。如果您以后想以某种方式允许加载自定义脚本,请保留旧搜索者并确保您以某种方式需要不在源中的文件。