2011-12-18 14 views
20

Ho cercato di incorporare lua in un'applicazione C++, ma senza alcun risultato poiché il compilatore si lamenta di "lua_open". Sto usando Lua 5.2.Incorporamento Lua in C++

Ho trovato molti articoli che sostengono che lua_open() è stato sostituito nella quinta versione ma nessuno di loro ha menzionato con cosa.

Ecco il codice che sto cercando di compilare

extern "C" { 
#include "../lua/lua.h" 
#include "../lua/lualib.h" 
#include "../lua/lauxlib.h" 
} 

int main() 
{ 
    int s=0; 

    lua_State *L = lua_open(); 
    // load the libs 
    luaL_openlibs(L); 
    luaL_dofile(L,"example.lua"); 
    printf("\nDone!\n"); 
    lua_close(L); 

    return 0; 
} 
+4

'lua_open' non era già presente nel manuale 5.1. Ha funzionato solo per compatibilità, che ora è stato rimosso in 5.2. – lhf

+0

Vedere anche questa molto utile risposta di overflow dello stack con un esempio della funzione lua_Alloc() con collegamenti alla documentazione di lua. http://stackoverflow.com/questions/3880798/lua-runs-out-of-memory –

+0

Ecco una seconda risposta di overflow dello stack che fornisce alcuni dettagli sull'allocazione della memoria lua http://stackoverflow.com/questions/11324117/ how-do-moderno-VMS-handle-allocazione della memoria –

risposta

34

Infatti, la funzione lua_open non è menzionato nel lua 5.2 reference manual

Un lua_State è costruito con lua_newstate, ed è possibile utilizzare luaL_newstate da lauxlib.h

Un modo più veloce per ottenere le risposte a questa domanda è esaminare il codice sorgente di Lua 5.2 (che ho appena fatto).