Luac不能使用一个脚本

时间:2014-07-28 12:38:58

标签: lua luac

我已经嵌入了lua,我想要预编译我的脚本。为此,我调用luac的main(用argc文件的数量是1)。我的问题是关于luac的功能doargs。我不理解变量i的使用。因为当我使用一个脚本时。在doargs函数之后的i的结果是1.并且在main函数中我们有argc - = i after。所以argc = 0,我有一个错误"没有文件"。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

luac -o outputFile script.lua

或者,看看Lua编程的第8章(Compilation, Execution, and Errors)是否有纯粹的Lua解决方案,或luaL_dofileluaL_dostringlua_dumpReference Manual中的lua_load函数用于C API解决方案。