Lua I/O在调试时可以工作,但在程序正常运行时却无法工作。

我正在 Lua (5.2.1) 脚本中第一次尝试写入文件,交替使用两个版本:

版本 1

local ofile = io.open("save.txt", "w")
ofile:write("Writing to file...")
ofile:close()

版本 2

io.output("save.txt")
io.write("Writing to file...")
io.close()

在 ZeroBrane Studio 中调试时,两个版本都完美地工作,但当它们插入到我的程序脚本中时,文件没有被写入,并且在此之后的任何代码显然没有被执行。

顺便说一下,我在程序中包含了 I/O 库。

lua_State *lua = luaL_newstate();

static const luaL_Reg lualibs[] = {
    { "base", luaopen_base },
    { "io", luaopen_io },
    { "string", luaopen_string },
    { "table",  luaopen_table },
    { NULL, NULL}
};

const luaL_Reg *lib = lualibs;
for(; lib->func != NULL; lib++) {
lib->func(lua);
lua_settop(lua, 0);
}
点赞
用户1819986
用户1819986

我确定问题与 Lua 库的加载方式有关。只需将单独加载改为:

luaL_openlibs(lua);

就可以解决整个问题。但我仍然不明白为什么单独调用 I/O 库无效。

2012-11-27 14:31:30