Una domanda molto semplice immagino:luabind: Non è possibile richiamare le funzioni di base come lua stampa, tostring
Il codice C++, chiamando Lua si presenta così:
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);
ora test.lua ha la seguente contenuto:
function main()
print "1"
end
all'esecuzione ricevo l'errore:
test.lua:2: attempt to call global 'print' (a nil value)
Qual è il problema? Ha qualcosa a che fare con gli ambienti? Ho pensato che funzioni come la stampa siano definite nell'ambiente globale. Perché non si trova allora?
Grazie mille.
ok ho capito: luaopen_base (m_L); deve essere chiamato dopo lua_open() –
dovrai chiamare luaopen_string (m_L), luaopen_math (m_L), ecc per aprire le librerie lua incorporate appropriate, se prevedi di usarle anche tu. –
@ chris.schuette: è necessario rispondere alla propria domanda e accettare quella risposta (contrassegnando così la domanda come completata) o eliminare la domanda. –