Bardzo podstawowe pytanie myślę:luabind: Nie można wywołać podstawowe funkcje, takie jak lua druku, toString
C++ kod, nazywając Lua wygląda następująco:
lua_State* m_L;
m_L = lua_open();
luabind::open(m_L);
luaL_dofile(m_L, "test.lua");
try {
luabind::call_function<void>(m_L, "main");
} catch (luabind::error& e) {
std::string error = lua_tostring(e.state(), -1);
std::cout << error << std::endl;
}
lua_close(m_L);
teraz test.lua ma poniżej treść:
function main()
print "1"
end
Po wykonaniu otrzymuję błąd:
test.lua:2: attempt to call global 'print' (a nil value)
Na czym polega problem? Ma coś wspólnego ze środowiskiem? Myślałem, że funkcje takie jak druk są zdefiniowane w środowisku globalnym. Dlaczego go nie znaleziono?
Dziękuję bardzo.
ok i zdobione: luaopen_base (m_L); musi zostać wywołany po lua_open() –
musisz wywołać luaopen_string (m_L), luaopen_math (m_L), itp., aby otworzyć odpowiednie wbudowane biblioteki lua, jeśli planujesz także ich używać. –
@ chris.schuette: Powinieneś odpowiedzieć na własne pytanie i zaakceptować odpowiedź (tym samym oznaczając pytanie jako gotowe) lub usunąć pytanie. –