在C ++中,使用luabind,在LUA文件中定义通话功能?(In C++, using luab

2019-10-31 11:18发布

说我有一个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 ::错误”是什么():LUA运行时错误中止

那么,究竟是什么做什么,我想要做正确的语法? (从错误的外观似乎与在LUA文件的语法问题,但我不认为这是...)

Answer 1:

你可能想打电话luaL_dofile而不是luaL_loadfile这里。



文章来源: In C++, using luabind, call function defined in lua file?