Хочу встроить интертрипатор LUA в своё приложение.
Никогда не имел опыта в таких вещах.
Представляю себе это как какую то свою DLL с API которые можно будет вызывать в LUA.
Потому вопрос. Есть ли куда смотреть по сему поводу. Например подсмотреть где то простенькое приложение в сырцах куда был встроен LUA.
Спасибо.
p.s.
Пардон может вопрос сформулирован не корректно, звЫняйте, первый раз таким занимаюсь.
Здравствуйте, nen777w, Вы писали:
N>Хочу встроить интертрипатор LUA в своё приложение.
N>Никогда не имел опыта в таких вещах.
N>Представляю себе это как какую то свою DLL с API которые можно будет вызывать в LUA.
N>Потому вопрос. Есть ли куда смотреть по сему поводу. Например подсмотреть где то простенькое приложение в сырцах куда был встроен LUA.
В документации lua есть пример по интеграции с C-шным приложением.
tolua ( http://www.tecgraf.puc-rio.br/~celes/tolua/ )
luabind ( http://luabind.sourceforge.net/ )
Здравствуйте, nen777w, Вы писали:
N>Потому вопрос. Есть ли куда смотреть по сему поводу. Например подсмотреть где то простенькое приложение в сырцах куда был встроен LUA.
Проще всего биндинг к си описан в
Programming in Lua.
Здравствуйте, Eugene Kilachkoff, Вы писали:
N>> Идеологически правильно было бы генерить из некоего описания типа idl код биндинга и заголовки для C-шного кода, но такое пока не попадалось.
А SWIG
http://www.swig.org/ ?
Здравствуйте, nen777w, Вы писали:
N>Хочу встроить интертрипатор LUA в своё приложение.
N>Никогда не имел опыта в таких вещах.
N>Представляю себе это как какую то свою DLL с API которые можно будет вызывать в LUA.
N>Потому вопрос. Есть ли куда смотреть по сему поводу. Например подсмотреть где то простенькое приложение в сырцах куда был встроен LUA.
Выложил простенький проект:
http://www.rsdn.ru/File/6856/luaproject.rar
Там используется luabind.
В примере
* Прозрачный бинд для ATL::CString, чтобы можно было писать/биндить/вызывать так:
СString GetChrue()
{
CString ret;
ret = _T("Chrue");
return ret;
}
биндить так:
module(L)
[
def("GetChrue", GetChrue)
];
вызывать так:
local str = GetChrue()
if str ~= "Chrue" then
print("NOT CHRUE!!!")
end
* Прозрачный биндинг SmartPtr'ов, чтобы классы могли шарится между C++ кодом и LUA кодом.
Когда-то писал свой биндер, для классов C++. Но времени как всегда не хватало, чтобы развивать его. Поэтому перешёл на luabind.
Мне luabind приглянулся, поэтому тоже советую.