Scriverò un programma utilizzando lua fo AI, quindi sto cercando di farlo funzionare insieme. Ma quando provo a caricare uno script lua dal mio file cpp ho questo messaggio di errore:Script Lua con C++: tentativo di indicizzare 'io' globale (valore nullo)
-- toto.lua:1: attempt to index global 'io' (a nil value)
Ecco il mio script Lua:
io.write("Running ", _VERSION, "\n")
e qui è il mio file cpp :
void report_errors(lua_State *L, int status)
{
if (status!=0) {
std::cerr << "-- " << lua_tostring(L, -1) << std::endl;
lua_pop(L, 1); // remove error message
}
}
int main(int argc, char** argv)
{
for (int n=1; n<argc; ++n) {
const char* file = argv[n];
lua_State *L = luaL_newstate();
luaopen_io(L); // provides io.*
luaopen_base(L);
luaopen_table(L);
luaopen_string(L);
luaopen_math(L);
std::cerr << "-- Loading file: " << file << std::endl;
int s = luaL_loadfile(L, file);
if (s==0) {
s = lua_pcall(L, 0, LUA_MULTRET, 0);
}
report_errors(L, s);
lua_close(L);
std::cerr << std::endl;
}
return 0;
}
Grazie mille.
Il codice crea uno stato Lua separato per ogni file che esegue. Ciò impedirà la comunicazione di file diversi. Questo potrebbe non essere quello che vuoi. – lhf