我正在尝试学习 lua,但我似乎被困在这里。
由于某种原因,以下代码实际上并未运行 lua 文件。
int main()
{
lua_State* L = luaL_newstate();
luaL_openlibs(L);
int width = 0;
int height = 0;
if(!luaL_loadfile(L, "./src/luaconf.lua") || !lua_pcall(L, 0, 0, 0))
{
lua_getglobal(L, "width");
lua_getglobal(L, "height");
if(!lua_isnumber(L, -2))
{
luaL_error(L, "width isn't a number");
}
else
{
width = lua_tointeger(L, -2);
}
if(!lua_isnumber(L, -1))
{
luaL_error(L, "height isn't a number");
}
else
{
height = lua_tointeger(L, -1);
}
}
printf("%i x %i", width, height);
return 0;
}
我知道如果我改变if(!luaL_loadfile(L, "./src/luaconf.lua") || !lua_pcall(L, 0, 0, 0)
它if(luaL_dofile(L, "./src/luaconf.lua"))
会起作用,但我想知道为什么上面的代码不起作用。
lua_pcall 不应该运行 lua 代码吗?如果不是为什么不呢?
luaconf.lua
width = 500
height = 40