Шаг 1

Итак, собираем Lua.

Upd: как собрать Lua для MSVC++ написано в Шаг 10.

Идем на www.lua.org и скачиваем исходники.
Распаковываем архив в отдельную папку. Теперь нам нужно собрать интерпретатор языка. Поскольку мы собираемся в дальнейшем встроить поддержку Lua в нашу собственную программу, то есть смысл работу сразу разделить на две части - отдельно собрать библиотеку .dll, содержащую всю функциональность Lua, а затем собрать собственно интерпретатор, который будет пользоваться этой библиотекой.
Для сборки будет использоваться бесплатная IDE Code::Blocks(www.codeblocks.org).
В папке, куда были распакованы файлы Lua, создаем новый .dll проект.
new project window
Затем добавляем в проект все *.c файлы из папки src, кроме двух файлов-  lua.c и luac.c.
В свойствах проекта на вкладке Targets изменяем имя библиотеки на lua.dll и проверяем, чтобы стояла галочка напротив Create Import Library.

Все готово для сборки. Нажимаем Build. Если все прошло нормально, то в нашей папке появились два файла - lua.dll и liblua.a.
Прекрасно! Половина пути пройдена, осталось совсем немного - собрать интерпретатор.

Для интерпретатора создаем новый консольный проект.

Удаляем созданный визардом файл main.cpp, а вместо него добавляем в проект файл lua.c.
Теперь нужно связать проект с библиотекой lua.dll, которую мы собрали на первом шаге.
Для этого выбираем у проекта Build Options и во вкладке Linker задаем созданную вместе с
lua.dll файлом библиотеку liblua.a.

Внимание! Для того, чтобы линковщик правильно смог найти нашу библиотеку, ему нужно указать путь к папке с библиотекой.
Для этого переходим на вкладку Directories и в ней на вкладку Linker. В качестве папки с библиотеками задаём текущую папку проекта "./" (без кавычек).

На картинке путь выглядит несколько иначе, но это сделал уже Code::Blocks.
 
Чтобы собрать проект нажимаем Build. Поскольку мы собрали консольную программу, то для ее запуска нажимаем Run.
В результате получаем что-то вроде этого:
интерпретатор
Курсор нам приветливо моргает, давайте прям тут же напишем программу на Lua. Не будем уходить от классики.
Пусть первая программа выведет нам в консоль "Hello, World!".
Для этого в консоли так прямо и пишем:

print("Hello, World!")

hello, world

Нажимаем Enter

hello, world

Программа сделала то, что мы хотели - напечатала "Hello, World!". Теперь проверим математические способности программы. Заставим ее вычислить что-нибудь серьезное. Пишем

print(1 + 2)

Нажимаем Enter:
hello, world
Ну, программа вроде не ошиблась. Теперь было бы неплохо закончить работу. Самое простое это, конечно, нажать на крестик в правом верхнем углу. Но мы не ищем легких путей. Завершим работу интерпретатора средствами самого языка. Для этого напишем:

os.exit()

И нажмем Enter.
hello, world

В результате сама IDE Code::Blocks выведет нам сообщение:
hello, world

Нажимаем Enter, после чего окно, наконец-то, исчезает.

Итак, что мы сделали на первом шаге:
За сим автор откланивается, надеясь на то, что первый шаг не окажется последним.

Назад
Hosted by uCoz