2009-02-17 2 views
4

В настоящее время у меня есть набор оберток SWIG для моих классов, и все это строит. Я могу создать виртуальную машину lua и загрузить мои обертки, но в этот момент я смущен. Googling рассказывает мне, как нажимать C++ на lua в swig, но не на то, как поместить lua в C++.Как вставить lua в C++ через SWIG

Действительно все, что я хочу сделать, это удается создать экземпляр объекта Lua и передать ему мой главный указатель на объект игрового движка, оттуда я могу управлять

ответ

3

Посмотри на программировании в Lua книге, имеет раздел на Lua C API.

Для вызова функций Lua используется lua_pcall, что эквивалентно lua_call (это краткий пример), за исключением того, что он будет ловить ошибки времени выполнения Lua.

Возможно, вы уже загрузили и запустили сценарий один раз (используя, например, luaL_dofile), поскольку первый шаг - это сценарий для определения функций для вызова. Когда он вернется, вы можете получить доступ к функциям, определенным скриптом, с помощью lua_getglobal.

+2

Из личного опыта работы с SWIG + Lua я бы настоятельно рекомендовал писать собственные вызовы C++ -> lua. Там есть несколько библиотек, и я столкнулся с ситуацией, пытаясь связать SWIG с Luabind (SWIG для Lua-> C++ и luabind для C++ -> Lua) - просто сохраните это просто. Связывание действительно тяжелая. Однако вы столкнетесь с дополнительными проблемами, пытаясь отвлечь звонки и на Lua. – Qix