2011-12-18 2 views
20

Я пытаюсь вставить lua в приложение C++, но безрезультатно, потому что компилятор жалуется на «lua_open». Я использую Lua 5.2.Встраивание Lua в C++

Я нашел много статей, в которых утверждалось, что lua_open() был заменен в пятой версии, но ни один из них не упоминается ни с чем.

Вот код, который я пытаюсь скомпилировать

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' уже не было в руководстве 5.1. Он работал только для совместимости, которая теперь удалена в 5.2. – lhf

+0

См. Также этот очень полезный ответ переполнения стека с примером функции lua_Alloc() со ссылками на документацию lua. http://stackoverflow.com/questions/3880798/lua-runs-out-of-memory –

+0

Вот второй ответ переполнения стека, дающий несколько более подробных сведений о распределении памяти lua http://stackoverflow.com/questions/11324117/ как-до-современный-VMS-ручка-память распределение –

ответ

34

Действительно, функция lua_open не упоминается в lua 5.2 reference manual

lua_State построен с lua_newstate, и вы можете использовать luaL_newstate из lauxlib.h

Более быстрый способ получить ответы на такой вопрос - изучить исходный код Lua 5.2 (который я только что сделал).

Смежные вопросы