Lua 卢克·唐';我不能用一个脚本

Lua 卢克·唐';我不能用一个脚本,lua,luac,Lua,Luac,我已经嵌入了lua,我想预编译我的脚本。为此,我调用luac的main(使用argc,文件的数量是1)。我的问题是luac的函数doargs。我不明白变量I的用法。因为当我使用一个脚本时。doargs函数后i的结果为1。在主函数中,后面有argc-=i。所以argc=0,我有一个错误“无文件”。有什么想法吗?luac是一个用于编译.lua文件的命令行实用程序。这种预期的用法是导致出现错误的原因 启动可执行文件时,操作系统将程序名作为其第一个参数传递(argv[0])。luacmain函数假定操作

我已经嵌入了lua,我想预编译我的脚本。为此,我调用luac的main(使用argc,文件的数量是1)。我的问题是luac的函数doargs。我不明白变量I的用法。因为当我使用一个脚本时。doargs函数后i的结果为1。在主函数中,后面有argc-=i。所以argc=0,我有一个错误“无文件”。有什么想法吗?

luac
是一个用于编译.lua文件的命令行实用程序。这种预期的用法是导致出现错误的原因

启动可执行文件时,操作系统将程序名作为其第一个参数传递(
argv[0]
)。
luac
main函数假定操作系统正在调用它,因此它希望始终至少有一个参数,并且它的
argv[0]
将是可执行文件的名称

因此,
doargs
从1开始其For循环,并将始终忽略第一(0)个参数。它返回已处理的选项数,这也是
argv
数组中第一个文件名的偏移量。主函数使用它来知道文件列表从何处开始

如果您真的想使用main函数预编译脚本,那么在参数数组的开头提供一个额外的伪参数,然后列出您的文件。最好从命令行使用
luac
,并提供一个输出文件,其中预编译脚本将按如下方式存储:

luac-o输出文件script.lua

或者,看一看纯Lua解决方案的Lua()编程第8章,或者C API解决方案中的
luaL\u dofile
luaL\u dostring
Lua\u dump
Lua\u load
函数