当程序编译时,Lua会崩溃。

我正在编写一个非常简单的 Lua 程序,尝试着自学这门语言。以下是这个三行程序:

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

当我将程序用作 Lua 脚本时,它可以正常工作。当我编译程序时,也可以正常工作。但是,当我运行编译后的程序时,出现了以下错误:

alt text http://profnano.org/andy/misc/img/lua_crash.jpg

我在 Pentium 4 上的 Windows XP 上使用 Lua 5.1.2。我已经卸载并重新安装了 Lua,但没有效果。我按照以下方式编译脚本:

luac -o hello.exe hello.lua

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

原文链接 https://stackoverflow.com/questions/2061879

点赞
stackoverflow用户27491
stackoverflow用户27491

luac不能编译成系统的exe文件。 它只是将Lua脚本转换为Lua字节码。 你仍然需要将生成的文件传递给Lua来执行。

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

如果你想将编译好的Lua制作成exe文件,你需要使用不同的环境——比如Visual Studio——制作一个小项目,使用嵌入的Lua库来加载(和执行)一个Lua文件——无论是已编译的还是脚本。

Stackoverflow上的“Creating Standalone Lua Executables”提供了一些关于如何进行该过程的提示。

2010-01-14 04:32:21