在C++中,使用luabind,调用lua文件中定义的函数?

发布于 2024-11-14 23:31:15 字数 771 浏览 5 评论 0原文

假设我有一个 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文件中语法的问题,但我不认为这是......)

Say I have a lua file:

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

How would I use luabind to load that file, and call that function- something like:

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

But this returns an error:
terminate called after throwing an instance of 'luabind::error'
what(): lua runtime error
Aborted

So, what is the proper syntax for doing what I want to do?
(From the looks of the error it seems to be a problem with the syntax in the lua file, but I don't think it is...)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烙印 2024-11-21 23:31:15

您可能想在此处调用 luaL_dofile 而不是 luaL_loadfile

You probably want to call luaL_dofile instead of luaL_loadfile here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文