gpt4 book ai didi

c - 在 C 中初始化 Lua 状态

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:54 25 4
gpt4 key购买 nike

我正尝试在我的 C 代码中使用 Lua (5.2)。我正在创建一个 Lua 状态并调用“luaL_openlibs”,但未初始化“loadstring”等全局函数。

lua_State* L = luaL_newstate();
luaL_openlibs(L);
luaL_loadstring(L, "print(loadstring)");
lua_pcall(L, 0, LUA_MULTRET, 0);

结果是:无。简单的 Lua 代码可以工作(例如,print("hello")),标准库(字符串,...)也是如此。请帮我弄清楚我做错了什么,我已经在谷歌上搜索了几个小时,我发现的只是那些奇怪的旧邮件列表和 Lua 文档(这也不是很有帮助,IMO)。

谢谢。

最佳答案

reference manual总是很有用。正如您在底部表格中看到的,Lua 5.2 中没有loadstring,最接近的是load。此外,如果您查看该手册的第 8.2 节,库中的更改,您可以看到有关 5.1 中可用的 loadstring 的项目,顺便说一下 loadstring 已被替换load,相同的功能。

更改源应该始终是最后的手段,即只有在没有其他办法的情况下。在这里,您想要的可以通过 C API 轻松实现:

lua_getglobal(L, "load")
lua_setglobal(L, "loadstring")

即使在您不使用 C(直接使用 Lua)的情况下,您也可以在脚本顶部执行 loadstring = load。或者在控制台或 .bashrc 中设置 setenv LUA_INIT "loadstring=load",然后 Lua 为它运行的每个脚本(从那个控制台)执行它。或者以 lua -e'loadstring=load' yourScript.lua 运行脚本。我错过了吗? :)

关于c - 在 C 中初始化 Lua 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22583507/

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