【问题标题】:In C++, using luabind, call function defined in lua file?在 C++ 中,使用 luabind,调用 lua 文件中定义的函数?
【发布时间】:2011-09-12 22:28:21
【问题描述】:

假设我有一个 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文件中的语法有问题,但我觉得不是……)

【问题讨论】:

    标签: c++ function lua call luabind


    【解决方案1】:

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

    【讨论】:

    • 但是我怎样才能得到结果呢?
    • 哦,我明白你的意思了。谢谢!
    猜你喜欢
    • 2011-01-14
    • 2011-11-18
    • 2018-12-21
    • 2012-03-14
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    相关资源
    最近更新 更多