Lua падает при компиляции программ - PullRequest
1 голос
/ 14 января 2010

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

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

luac -o hello.exe hello.lua

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

1 Ответ

4 голосов
/ 14 января 2010

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

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

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

Создание автономных исполняемых файлов Lua в Stackoverflow содержит несколько советов, как это сделать.

...