Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction 编译程序时Lua崩溃_Compiler Construction_Lua_Luac - Fatal编程技术网

Compiler construction 编译程序时Lua崩溃

Compiler construction 编译程序时Lua崩溃,compiler-construction,lua,luac,Compiler Construction,Lua,Luac,我正在做一个非常非常简单的Lua程序,试图自学这门语言。以下是三行程序: file = io.open("hello.txt", "w") file:write("Hello, World.\n") io.close(file) 当我使用Lua作为脚本的程序时,它工作得很好。当我编译程序时,它工作正常。但是,当我运行编译后的程序时,我得到以下结果: 我正在奔腾4上使用WindowsXP上的Lua5.1.2。我卸载了Lua并重新安装了它,但没有效果。我将按照如下方式编译脚本: luac -o h

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

file = io.open("hello.txt", "w")
file:write("Hello, World.\n")
io.close(file)
当我使用Lua作为脚本的程序时,它工作得很好。当我编译程序时,它工作正常。但是,当我运行编译后的程序时,我得到以下结果:

我正在奔腾4上使用WindowsXP上的Lua5.1.2。我卸载了Lua并重新安装了它,但没有效果。我将按照如下方式编译脚本:

luac -o hello.exe hello.lua

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

luac不编译为系统exe文件。它所做的只是将lua脚本转换成lua字节码。您仍然需要将结果文件传递给lua才能执行

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

如果您想用编译的lua生成exe,则需要使用不同的环境(可能是visual studio)来生成一个小项目,该项目使用嵌入式lualib加载并执行lua文件(编译的或脚本)


关于Stackoverflow,有一些关于如何进行的技巧。

luac不会编译成系统exe文件。它所做的只是将lua脚本转换成lua字节码。您仍然需要将结果文件传递给lua才能执行

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

如果您想用编译的lua生成exe,则需要使用不同的环境(可能是visual studio)来生成一个小项目,该项目使用嵌入式lualib加载并执行lua文件(编译的或脚本)


Stackoverflow上有一些关于如何进行的技巧。

看起来您正在尝试为16位系统编译。检查编译器标志?看起来您正在尝试为16位系统编译。检查编译器标志?谢谢。我想应该这样。谢谢。我认为应该这样做。