В С++, используя luabind, вызвать функцию, определенную в файле lua?

Скажем, у меня есть файл lua:

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

Как бы я использовал luabind для загрузки этого файла и вызова этой функции, например:

//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);
}

Но это возвращает ошибку: вызывается завершение после создания экземпляра 'luabind::error' what(): ошибка времени выполнения lua Прервано

Итак, каков правильный синтаксис для выполнения того, что я хочу сделать? (Судя по внешнему виду ошибки, это проблема с синтаксисом в файле lua, но я так не думаю...)


person Keelx    schedule 11.06.2011    source источник


Ответы (1)


Вы, вероятно, захотите вызвать здесь luaL_dofile вместо luaL_loadfile.

person Luc Danton    schedule 11.06.2011
comment
Но как я получу результаты? - person Keelx; 11.06.2011
comment
о, я понимаю, что вы имеете в виду. Спасибо! - person Keelx; 11.06.2011