Pregunta

Digamos que tengo un archivo LUA:

--functions.lua
function testadd(a, b) 
    return a+b
end

¿Cómo usaría Luabind para cargar ese archivo y llamar a esa función, algo así como:

//test.cpp
extern "C" {
    #include "lua.h"
    #include "lualib.h"
    #include "lauxlib.h"
}
#include <luabind/luabind.hpp>
#include <luabind/function.hpp> 

int main() {
    lua_State *myLuaState = lua_open();
    luaL_openlibs(myLuaState);
    luaL_loadfile(myLuaState, "functions.lua");
    luabind::open(myLuaState);
    int value = luabind::call_function<int>(myLuaState, "testadd", 2, 3);
    lua_close(myLuaState);
}

Pero esto devuelve un error:Terminar llamado después de lanzar una instancia de 'Luabind :: Error' What (): Lua Error de tiempo de ejecución abortado

Entonces, ¿cuál es la sintaxis adecuada para hacer lo que quiero hacer? (Por el aspecto del error, parece ser un problema con la sintaxis en el archivo LUA, pero no creo que sea ...)

¿Fue útil?

Solución

Probablemente quieras llamar luaL_dofile en vez de luaL_loadfile aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top