Уроки Коммент.

Создание игр » Featured, Scripting » Lua – Установка Lua

Lua – Установка Lua

Установка LuaУстановка lua это вопрос, который возникает достаточно часто. Что, вообще-то, достаточно удивительно, потому как установка lua на самом деле, крайне проста и понятна. Можно даже сказать, что там вообще нечего делать. Но, раз уж такие вопросы возникают, давайте немного поговорим об установке Lua.

Установка Луа. Скачиваем

Первое, что нам нужно будет сделать перед установкой, это скачать исходники луа с её официального сайта: http://www.lua.org/download.html. Для установки, естественно, нам понадобится самая последняя версия, на данный момент это lua 5.1.4. После скачивания, естественно, надо разархивировать исходники lua в отдельную папку.

Установка Луа. Компиляция.

Есть два варианта компиляции луа, которые, в принципе, ничем не отличаются ))) Первый – это компиляция из Visual Studio Command Prompt:

  1. Запускаем Visual Studio
  2. Выполняем Tools->Visual Studio Command Prompt
  3. Переходим в папку с луа, в директорию etc. Вот так: cd D:/mylibs/lua-5.1.4
  4. запускаем скрипт компиляции луа: etc/luavs.bat
  5. Мы получили нужны нам файлы lua.exe и luac.exe

Второй способ без запуска Visual Studio:

  1. В любом файл-мендеже (я лично работаю в FAR) заходим в папку где_луа/etc/
  2. Редактируем файл, первой строкой ставим: call “путь_к_вижуалстудио/VC/bin/vcvars32.bat”
  3. Добавляем вторую строку: cd .. и сохраняем файл
  4. Запускаем, получаем искомые экзешники

Установка Луа. Доступ

Что бы вы могли запускать луа откуда угодно – вам надо добавить их (путь к ним) в переменную окружения %PATH%. Думаю, Вы сами прекрасно знаете как это сделать. В любом случае, нам не нужны эти файлы, т.к. мы планируем использовать луа внтри наших программ, а не как отдельное приложение. После этого считайте, что сама установка Lua завершена, вам лишь остаётся прописать в Visual Studio пути в получившейся .lib и хидерам луа.

Установка Луа. Статическая линковка.

Меня лично выводит из себя то, что с каждый проектом, использующим луа, приходится таскать и lua.dll , поскольку без неё программы работать не будут. А что бы они работали – надо что бы луа линковалась с нашей программой статически. Делается это тоже совсем не сложно:

  1. Делаем в Visual Studio новый проект, Win32Project, назовём его “LuaLib”
  2. Тип проекта указываем “Static Library”, отключаем использование Precompiled Header, нажимаем Finish
  3. Добавляем в проект все файлы .h и .c, кроме lua.c и luac.c
  4. Что бы компилятор не выдавал нам варнингов, в настройки проекта (Protec/Propreties/Preprocessor) добавляем ;_CRT_SECURE_NO_WARNINGS (не забудьте сделать это и для релиз и для дебаг-версии!!!)
  5. В настройках линковки (Project/Properties/Librarian/General/OutputFile) указываем какие имена библиотек мы хотим. Я указал lua.lib для релиза и lua-debug.lib для дебага.
  6. Компилируем дебаг и релиз-версии. Получаем нужные нам либы
  7. Прописываем пути к ним в Visual Studio

Установка Луа. Проверка.

Проверим, всё ли работает. Создаём новый проект (я сделал консольный проект win32). Дописываем инклюды луа:

extern "C" {
# include "lua.h"
# include "lauxlib.h"
# include "lualib.h"
}
#include <conio.h> // надо для _getch()

и доделываем сам main():

int _tmain(int argc, _TCHAR* argv[])
{
    lua_State *L;
 
    L = lua_open();//Создаем стэк
 
    luaL_openlibs(L);//подключить стандартные библиотеки   
 
    int status = luaL_loadfile(L, "test.lua");//загрузить файл
    /* Состояние стtка:
        [-1]main <--top of the stack
     */
    if (status)
    {
        (void)fprintf(stderr, "file not found\n");
        return 1;
    }
	int result = lua_pcall(L, 0, LUA_MULTRET, 0);
	_getch();
	return 0;
}

В настройки линковщика (Project/Properties/Linker/Input/Addition Dependencies) не забываем добавить нашу библиотеку (lua.lib для релиза и lua-debug.lib для дебага). Компилируем. Создаём тестовый файлик с луа-скриптом:

for i = 1, 10 do
  print(i)
end

Установка Lua. Проверка. Запускаем и видим то, что и хотели. Теперь мы можем использовать Луа в наших программах и не таскать с собой этот ненавистный lua.dll – мне кажется, что это намного удобнее и приятнее )

На этом наш урок завершён. Теперь у вас есть собранные версии дебаг- и релиз- версий луа, собранные для статической компиляции и вы можете без каких-либо проблем использовать их в ваших проектах.

В следующих уроках мы более подробно поговорим про использование луа-скриптов в программах и, в частности, в играх.

Ещё по этой теме:




Раздел: Featured, Scripting · Теги: Lua

10 комментариев на "Lua – Установка Lua"
  1. Artyom пишет:

    Автор, спасибо, хорошая статья, всё работает!

    1. Вячеслав пишет:

      Не за что ;-) Очень рад, что у Вас всё получилось!

  2. Виталий пишет:

    Да только что-то, под MSVC 2010 не могу скопилить, хотя либы подключил…

    1. Вячеслав пишет:

      Что говорит? Какие ошибки?

  3. Василий пишет:

    Спасибо гуглу, за то, что я смог повторить то же самое в xcode.

    1. Dze пишет:

      Василий подскажи сайт где описано как подключить lua к xcode. А то ничего толкового найти не могу.

      »crosslinked«

  4. Dze пишет:

    оказался подробный faq есть на сайте lua.org, кто бы мог подумать ))))

  5. Виталий пишет:

    А как на счет компиляции LUA ? Будут статьи?

  6. Илья пишет:

    Папку с lua распаковал в диск С

    Setting environment for using Microsoft Visual Studio 2010 x86 tools.

    c:\program files\microsoft visual studio 10.0\vc\bin>cd C:/lua-5.1.4

    C:\lua-5.1.4>etc
    “etc” не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

    C:\lua-5.1.4>/etc
    “/etc” не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

    C:\lua-5.1.4>cd C:/lua-5.1.4/etc

    C:\lua-5.1.4\etc>cd C:/lua-5.1.4/etc/luavs
    Системе не удается найти указанный путь.

    C:\lua-5.1.4\etc>luavs

    C:\lua-5.1.4\etc>cd src
    Системе не удается найти указанный путь.

    C:\lua-5.1.4\etc>cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE /DLUA_BUIL
    D_AS_DLL l*.c
    l*.c
    c1 : fatal error C1083: Не удается открыть файл источник: l*.c: Invalid argument

    C:\lua-5.1.4\etc>del lua.obj luac.obj
    Не удается найти C:\lua-5.1.4\etc\lua.obj

    C:\lua-5.1.4\etc>link /nologo /DLL /out:lua51.dll l*.obj
    LINK : warning LNK4001: не указаны объектные файлы; использованы библиотеки
    LINK : warning LNK4068: параметр /MACHINE не указан; принимается по умолчанию на
    X86
    LINK : error LNK2001: неразрешенный внешний символ “__DllMainCRTStartup@12″
    lua51.dll : fatal error LNK1120: 1 неразрешенных внешних элементов

    C:\lua-5.1.4\etc>if exist lua51.dll.manifest mt /nologo -manifest lua51.dll.mani
    fest -outputresource:lua51.dll;2

    C:\lua-5.1.4\etc>cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE /DLUA_BUIL
    D_AS_DLL lua.c
    lua.c
    c1 : fatal error C1083: Не удается открыть файл источник: lua.c: No such file or
    directory

    C:\lua-5.1.4\etc>link /nologo /out:lua.exe lua.obj lua51.lib
    LINK : fatal error LNK1181: не удается открыть входной файл “lua.obj”

    C:\lua-5.1.4\etc>if exist lua.exe.manifest mt /nologo -manifest lua.exe.manifest
    -outputresource:lua.exe

    C:\lua-5.1.4\etc>cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE l*.c print
    .c
    l*.c
    c1 : fatal error C1083: Не удается открыть файл источник: l*.c: Invalid argument

    print.c
    c1 : fatal error C1083: Не удается открыть файл источник: print.c: No such file
    or directory
    Создание кода…

    C:\lua-5.1.4\etc>del lua.obj linit.obj lbaselib.obj ldblib.obj liolib.obj lmathl
    ib.obj loslib.obj ltablib.obj lstrlib.obj loadlib.obj
    Не удается найти C:\lua-5.1.4\etc\lua.obj

    C:\lua-5.1.4\etc>link /nologo /out:luac.exe *.obj
    LINK : warning LNK4001: не указаны объектные файлы; использованы библиотеки
    LINK : warning LNK4068: параметр /MACHINE не указан; принимается по умолчанию на
    X86
    LINK : fatal error LNK1561: точка входа должна быть определена

    C:\lua-5.1.4\etc>if exist luac.exe.manifest mt /nologo -manifest luac.exe.manife
    st -outputresource:luac.exe

    C:\lua-5.1.4\etc>del *.obj *.manifest
    Не удается найти C:\lua-5.1.4\etc\*.obj

    C:\lua-5.1.4\etc>cd ..

    C:\lua-5.1.4\etc>

  7. Влад пишет:

    Всё куда проще чем кажется. Спасибо за урок. Но я сделал всё по другому. Вот пример
    #include “stdafx.h”
    #include “lua.hpp”
    int main(int argc, char** argv)
    {
    lua_State *L = luaL_newstate();
    luaL_openlibs(L);

    if (luaL_dofile(L, “test.lua”))
    {
    const char* err = lua_tostring(L, -1);
    printf(err);
    }
    lua_close(L);
    getchar();
    return 0;
    }

Оставить комментарий

*

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>