程序编译时Lua崩溃了

时间:2010-01-14 02:56:40

标签: compiler-construction lua luac

我正在研究一个非常非常简单的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

我做错了什么,或者这是一个已知的错误?我希望能够编写Lua程序,以便在没有安装Lua的计算机上运行。救命! (谢谢!)

1 个答案:

答案 0 :(得分:4)

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

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

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

Stackoverflow上的

Creating Standalone Lua Executables提供了一些关于如何实现这一目标的提示。