J'encadre Lua dans une application C++ en utilisant Lua5.1 et j'ai un problème étrange avec luaL_newstate().lual_newstate en dehors de la fonction principale
Cela fonctionne:
lua_State *L = NULL;
int main()
{
L = luaL_newstate();
return 0;
}
J'ai récemment restructuré mon code et a choisi de créer une fonction init comme ceci:
lua_State *L = NULL;
void init_lua(lua_State *L)
{
L = luaL_newstate();
}
int main()
{
init_lua(L);
return 0;
}
qui ne fonctionne pas. Pour une raison quelconque, luaL_newstate() renvoie toujours NULL dans cette situation. Mais, d'ajouter à la confusion, cela fonctionne:
lua_State *L = NULL;
void init_lua(lua_State **L)
{
*L = luaL_newstate();
}
int main()
{
init_lua(&L);
return 0;
}
Fonctionnellement, je ne vois pas de différence entre les deuxième et troisième exemples et pourtant le deuxième segfaults dès que je tente un appel Lua en utilisant L et la troisième fonctionne très bien. Que se passe-t-il ici?
Avez-vous un livre C++? Que dit-il de transmettre des valeurs à des fonctions? – GManNickG