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

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

我正在看视频,我已经检查了一小段代码,我看不出我做错了什么。

#include <Lua Sourcelua.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)

这是出现的错误框如下所示:

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

错误框链接


编辑:

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

我的项目文件是这样的:

项目文件的图像


attempt to call a string value是由lua_call触发的,很可能意味着luaL_loadfile返回非零值,并在堆栈中留下错误消息。

检查luaL_loadfile的返回码。

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


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

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

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

链接地址: http://www.djcxy.com/p/95461.html

上一篇: call(S, 0, 0) won't work (attempted to call a string value)?

下一篇: Scripting with LuaJIT and selectively sandboxing the FFI