2011-12-18 14 views
20

He intentado incrustar lua en una aplicación de C++ pero fue en vano ya que el compilador se queja de "lua_open". Estoy usando Lua 5.2.Incrustar Lua en C++

Encontré muchos artículos que decían que lua_open() se reemplazó en la quinta versión, pero ninguno de ellos mencionó con qué.

Aquí está el código que estoy tratando de recopilar

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' ya no estaba presente en el manual 5.1. Funcionó solo por compatibilidad, que ahora se eliminó en 5.2. – lhf

+0

Consulte también esta respuesta de desbordamiento de pila muy útil con un ejemplo de la función lua_Alloc() con enlaces a la documentación de lua. http://stackoverflow.com/questions/3880798/lua-runs-out-of-memory –

+0

Aquí hay una segunda respuesta de desbordamiento de pila dando algunos detalles más respecto a la asignación de memoria lua http://stackoverflow.com/questions/11324117/ how-do-modern-vms-handle-memory-allocation –

Respuesta

34

De hecho, la función lua_open no se menciona en la lua 5.2 reference manual

Un lua_State se construye con lua_newstate, y se puede utilizar luaL_newstate de lauxlib.h

Una forma más rápida de obtener respuestas a esa pregunta es mirar el código fuente de Lua 5.2 (que acabo de hacer).