Lua - установка lua

Установка lua це питання, яке виникає досить часто. Що, взагалі-то, досить дивно, тому як установка lua насправді, вкрай проста і зрозуміла. Можна навіть сказати, що там взагалі нема чого робити. Але, якщо вже такі питання виникають, давайте трохи поговоримо про установку 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). Дописуємо інклюд Луа:

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

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 \ etc> cd 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> 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

Все набагато простіше ніж здається. Дякую за урок. Але я зробив все по іншому. Ось приклад
#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;
>