我已经嵌入了 lua,我想预编译我的脚本。为此,我调用了 luac 的 main (使用 argc 文件数为 1)。我的问题出在 luac 的函数 doargs 上。我不明白变量 i 的用法。因为当我使用一个脚本时。doargs 函数后 i 的结果是 1。在 main 函数中,我们有 argc -= i 后。所以 argc = 0 我有一个错误“没有文件”。任何想法 ?
问问题
415 次
1 回答
2
luac
旨在成为编译 .lua 文件的命令行实用程序。这种预期的用法是您收到错误的原因。
当您启动可执行文件时,操作系统将程序的名称作为其第一个参数 ( argv[0]
) 传递。主luac
函数假设它被操作系统调用,所以它期望总是至少有一个参数,它argv[0]
是可执行文件的名称。
出于这个原因doargs
,它的 for 循环从 1 开始,并且总是会忽略第一个(第 0 个)参数。它返回它处理了多少个选项,这也是argv
数组中第一个文件名的偏移量。主函数使用它来了解文件列表的开始位置。
如果你真的想使用 main 函数来预编译你的脚本,那么在你的参数数组的开头提供一个额外的虚拟参数,然后列出你的文件。最好您应该luac
从命令行使用并提供一个输出文件,预编译脚本将存储在该文件中,如下所示:
luac -o outputFile script.lua
或者,请查看第 8 章 Lua 编程(编译、执行和错误)以获得纯 Lua 解决方案,或参阅参考手册luaL_dofile
中的、luaL_dostring
、lua_dump
和lua_load
函数以获得 C API 解决方案。
于 2014-07-28T13:43:40.147 回答