Я экспериментирую с интеграцией LUA в свою программу с помощью luabind
, но наткнулся на большой камень преткновения.
Я очень не знаком с соглашениями о вызовах LUA и чувствую, что упускаю что-то простое.
Вот мой код С++:
struct app_t
{
//...
void exit();
void reset();
resource_mgr_t resources;
//...
};
struct resource_mgr_t
{
//...
void prune();
void purge();
//...
};
extern app_t app;
И мои luabind
модули:
luabind::module(state)
[
luabind::class_<resource_mgr_t>("resource_mgr")
.def("prune", &resource_mgr_t::prune)
.def("purge", &resource_mgr_t::purge)
];
luabind::module(state)
[
luabind::class_<app_t>("app")
.def("exit", &app_t::exit)
.def("reset", &app_t::reset)
.def_readonly("resources", &app_t::resources)
];
luabind::globals(state)["app"] = &app;
Я могу выполнить следующие команды lua просто отлично:
app:exit()
app:reset()
Однако следующий вызов завершается ошибкой:
app.resources:purge()
Со следующей ошибкой:
[string "app.resources:purge()"]:1: attempt to index field 'resources' (a function value)
Любая помощь очень ценится!