我嵌入了lua,我想要预编译我的脚本。为此,我调用luac的主文件(使用argc,文件数为1)。我的问题在于卢阿茨的作用。我不明白变量i的用法,因为当我使用一个脚本时。doargs函数后的I值为1,主函数为argc -= i。所以argc =0,我有一个错误“没有文件”。知道吗?
发布于 2014-07-28 13:43:40
luac是用来编译.lua文件的命令行实用工具。这种预期的使用是导致错误的原因。
启动可执行文件时,操作系统将程序的名称作为其第一个参数(argv[0])传递。luac主函数假定操作系统正在调用它,因此它希望始终至少有一个参数,并且它的argv[0]将是可执行文件的名称。
出于这个原因,doargs在1开始其For循环,并将始终忽略第一个(第0)参数。它返回处理了多少个选项,这也是argv数组中第一个文件名的偏移量。main函数使用它来了解文件列表的起始位置。
如果您真的想使用main函数预编译脚本,那么在参数数组的开头提供一个额外的虚拟参数,然后列出您的文件。最好使用命令行中的luac,并提供一个输出文件,其中预编译脚本将按如下方式存储:
luac -o outputFile script.lua
或者,看一看用于纯Lua解决方案的Lua (编译、执行和错误)编程的第8章,或用于C解决方案的参考手册中的luaL_dofile、luaL_dostring、lua_dump和lua_load函数。
https://stackoverflow.com/questions/24995442
复制相似问题