2011-12-18 23 views
20

Próbowałem osadzić lua w aplikacji C++, ale bezskutecznie, ponieważ kompilator narzeka na "lua_open". Używam Lua 5.2.Umieszczanie Lua w C+Osadzanie Lua w C++

Znalazłem wiele artykułów twierdzących, że lua_open() został zastąpiony w piątej wersji, ale żadna z nich nie została wymieniona z czym.

Oto kod próbuję skompilować

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' był już nieobecny w podręczniku 5.1. Działa tylko w przypadku zgodności, która została usunięta w wersji 5.2. – lhf

+0

Zobacz także bardzo pomocną odpowiedź przepełnienia stosu z przykładem funkcji lua_Alloc() z linkami do dokumentacji lua. http://stackoverflow.com/questions/3880798/lua-runs-out-of-memory –

+0

Oto druga odpowiedź przepełnienia stosu, podająca kilka dodatkowych informacji dotyczących alokacji pamięci lua http://stackoverflow.com/questions/11324117/ how-do-modern-vms-handle-alokacja pamięci –

Odpowiedz

34

Rzeczywiście, funkcja lua_open nie jest wymienione w lua 5.2 reference manual

lua_State jest wykonana z lua_newstate, i można użyć luaL_newstate z lauxlib.h

Szybszym sposobem uzyskania odpowiedzi na takie pytanie jest sprawdzenie kodu źródłowego Lua 5.2 (co właśnie zrobiłem).