gpt4 book ai didi

c++ - luabind:无法调用基本的 lua 函数,例如 print、tostring

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:26:11 25 4
gpt4 key购买 nike

我想这是一个非常基本的问题:

C++代码,调用lua是这样的:

lua_State* m_L;
m_L = lua_open();
luabind::open(m_L);
luaL_dofile(m_L, "test.lua");
try {
luabind::call_function<void>(m_L, "main");
} catch (luabind::error& e) {
std::string error = lua_tostring(e.state(), -1);
std::cout << error << std::endl;
}
lua_close(m_L);

现在test.lua有如下内容:

function main()
print "1"
end

执行后我收到错误:

test.lua:2: attempt to call global 'print' (a nil value)

问题是什么?跟环境有关系?我认为像 print 这样的函数是在全局环境中定义的。怎么没找到呢?

非常感谢。

最佳答案

如您所知,您必须调用 luaopen_base 来获取 print 和其他基本函数。然后你需要调用luaopen_string, luaopen_math,把基本的模块和函数都写进去,不用自己写,可以用luaL_openlibs一次加载所有的Lua基础函数:

lua_State* m_L = luaL_newstate();
luaL_openlibs(m_L);

关于c++ - luabind:无法调用基本的 lua 函数,例如 print、tostring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9431297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com