Debugging Lua I/O在调试时工作,但不在程序中正常工作

Debugging Lua I/O在调试时工作,但不在程序中正常工作,debugging,file-io,io,lua,lua-5.2,Debugging,File Io,Io,Lua,Lua 5.2,我第一次在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中进行调试时,这两种方法都能很好地工作,但是当插入到我的程序

我第一次在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);
}

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

luaL_openlibs(lua);

修复了整个问题。但是我仍然不明白为什么单独调用I/O库不起作用。

这不应该是问题所在,只是好奇,尝试将文件更改为
c:/test.txt
,而不是我尝试过的
test.txt
。同样,它在调试时工作,但在实际程序中失败。您的程序在执行此代码时是否检查错误?