2010-01-14 5 views
1

Я работаю над очень простой программой 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

Я использую Lua 5.1.2 на Windows XP на Pentium 4. Я неустановленные Lua и заново установили его, без эффекта , Я составляю сценарий следующим образом:

luac -o hello.exe hello.lua 

Я делаю что-то неправильно или это известная ошибка? Я хотел бы иметь возможность писать программы Lua для работы на компьютерах без установки Lua. Помогите! (И спасибо!)

+0

Похоже, вы пытаетесь скомпилировать 16-битную систему. Проверить флаги компилятора? –

ответ

4

luac не компилируется в системный exe-файл. Все, что он делает, это взять сценарий lua и превратить его в байт-код lua. Вам еще должны передать полученный файл в lua для выполнения.

Таким образом, файл exe содержит мусор с точки зрения ОС. Когда exe-файлы не содержат допустимых заголовков exe, ОС по какой-то причине решает, что он должен быть старым файлом dos .com и пытается выполнить его с 16-разрядной подсистемой dos. Отсюда странное сообщение об ошибке.

Если вы хотите сделать exe из скомпилированного lua, вам нужно будет использовать другую среду - возможно, визуальную студию - создать небольшой проект, который загружает (и выполняет) файл lua - скомпилированный или скрипт - используя встроенный lualib.

Creating Standalone Lua Executables На Stackoverflow есть несколько советов о том, как это сделать.

+0

Спасибо. Я думаю, что это нужно. – AndrewBurton

Смежные вопросы