lua_call(S, 0, 0) 无法正常工作(试图调用字符串值)?

所以,我想要在我的C++游戏引擎中添加Lua脚本,但我似乎无法做到。

我正在观看一个视频,并查看了一小部分代码,但我看不出我做错了什么。

#include <Lua Source\lua.hpp>

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

luaL_loadfile(S, "main.lua");
lua_call(S, 0, 0);

Lua源代码和文件都在我的项目文件夹中,除了两个cpp文件,这是主函数(已删除)。


我的Lua文件看起来像这样:(并且放在Lua源代码所在的位置。)

print("你好,世界")

我得到的错误如下所示:

控制台中:

PANIC:调用Lua API中的不受保护的错误(尝试调用字符串值)

这是弹出的错误框的样子:

(从左到右的按钮:取消、重试、忽略)

错误框链接


# 编辑:

我的代码现在看起来像这样,添加 puts(lua_tostring(S, -1)); 生成了一个错误消息:

cannot open main.lua: no such file or directory

代码

lua_State* S = luaL_newstate();
luaL_openlibs(S);
luaL_loadfile(S, "main.lua");
puts(lua_tostring(S, -1));
lua_call(S, 0, 0);

我的项目文件如下:

项目文件的图像

点赞
用户107090
用户107090

attempt to call a string value 是由于调用 lua_call 引起的,很可能是因为 luaL_loadfile 返回了非零值,且在栈上留下了一个错误消息。

检查 luaL_loadfile 的返回代码。

此外,在调用 luaL_loadfile 后添加 puts(lua_tostring(S,-1));

2016-02-05 13:33:53
用户5608440
用户5608440

原来我只是误解了一个教程。

我以为他的意思是 lua 脚本运行在 lua 的源代码文件夹之外...

但是,它是在你的项目工作目录之外运行的。

2016-02-05 15:45:05