在C++中使用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);
}

但是这会返回一个错误: terminate called after throwing an instance of 'luabind::error' what(): lua runtime error Aborted

那么,我想做的正确语法是什么呢? (从错误的外观来看,似乎是 lua 文件中的语法问题,但我不认为是这样的...)

原文链接 https://stackoverflow.com/questions/6314136

点赞
stackoverflow用户726300
stackoverflow用户726300

你可能想在这里调用 luaL_dofile 而不是 luaL_loadfile

2011-06-11 04:58:10