Lua: компилируется в нативном lua, но ошибка в C ++ с LuaJIT и sol2

У меня есть следующий код Lua, который прекрасно работает в онлайн переводчик:

__sprite_properties = {
events = {}
}

function bind_event(event_name, fun)
table.insert(__sprite_properties.events, { event_name, fun })
print(__sprite_properties.events[1][1])
end

foo = function()
return 0
end
bind_event("foo_event", foo)

>> foo_event

Но когда я пытаюсь загрузить и запустить скрипт в C ++ с использованием библиотеки sol2, я получаю следующую ошибку на table.insert заявление:

script.lua: 6: попытка индексировать глобальную «таблицу» (нулевое значение)

трассировка стека: script.lua: 6: в функции ‘bind_event’ —
script.lua: 13: в основной части

Я использую LuaJIT в качестве дистрибутива lua.
Код, используемый для загрузки скрипта в lua, представляет собой следующий фрагмент:

sol::state lua;
lua.open_libraries(sol::lib::base);
try {
lua.safe_script_file("script.lua");
}
catch (const sol::error& e) {
std::cout << e.what() << std::endl;
}

Почему этот код не может выполняться должным образом при загрузке в C ++?

2

Решение

Вы загрузили стандартные библиотеки Lua в свой код C ++? Кажется, вы загрузили только базовую библиотеку, а не библиотеку таблиц:

lua.open_libraries(sol::lib::base);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]