lua_call(S,0,0)不起作用(试图调用字符串值)?

时间:2016-02-05 12:57:27

标签: c++ lua

所以,我想继续为我的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源代码和文件都在我的项目文件夹中,除了2个cpp文件是主要功能(删除了那些)。

我的Lua文件如下所示:(并且放在Lua源代码所在的位置。)

print("Hello World")

我得到的错误如下:

在控制台中:

PANIC : unprotected error in call to Lua API (attempt to call a string value)

这就是出现的错误框:

(按钮从左到右:取消,再试一次,忽略)

Error Box Link

编辑:

我的代码现在看起来像这样,添加了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);

我的项目文件是这样的:

Image of project files

2 个答案:

答案 0 :(得分:3)

{p> attempt to call a string valuelua_call触发,很可能意味着luaL_loadfile返回非零并在堆栈上留下错误消息。

检查luaL_loadfile的返回代码。

另外,请在致电puts(lua_tostring(S,-1));后添加luaL_loadfile

答案 1 :(得分:1)

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

以为他的意思是lua脚本用完lua自己的源代码文件夹......

但是,它用完了你的项目工作目录。