1

我正在开发一个非常非常简单的 Lua 程序,试图自学这门语言。这是三行程序:

file = io.open("hello.txt", "w")
file:write("Hello, World.\n")
io.close(file)

当我将该程序与 Lua 一起用作脚本时,它运行良好。当我编译程序时,它可以工作。但是,当我运行编译后的程序时,我得到了这个:

替代文字 http://profnano.org/andy/misc/img/lua_crash.jpg

我在 Pentium 4 上的 Windows XP 上使用 Lua 5.1.2。我卸载了 Lua 并重新安装了它,但没有任何效果。我正在编译脚本如下:

luac -o hello.exe hello.lua

我做错了什么,还是这是一个已知的错误?我希望能够编写 Lua 程序以在未安装 Lua 的计算机上运行。帮助!(谢谢!)

4

1 回答 1

4

luac 不会编译为系统 exe 文件。它所做的只是获取 lua 脚本,并将其转换为 lua 字节码。您仍然必须将生成的文件传递给 lua 才能执行。

因此,从操作系统的角度来看,exe 文件包含垃圾。当 exe 文件不包含有效的 exe 标头时,操作系统出于某种原因决定它必须是旧式 dos .com 文件并尝试使用 16 位 dos 子系统执行它。因此出现了奇怪的错误消息。

如果你想用编译的lua制作一个exe,你需要使用不同的环境——也许是visual studio——来制作一个加载(和执行)lua文件的小项目——编译或脚本——使用嵌入式lualib。

在 Stackoverflow 上创建独立的 Lua 可执行文件有一些关于如何去做的技巧。

于 2010-01-14T04:32:21.070 回答