Debugging Lua I/O在调试时工作,但不在程序中正常工作
我第一次在Lua(5.2.1)脚本中测试写入文件,在两个版本之间交替进行: 版本1Debugging 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中进行调试时,这两种方法都能很好地工作,但是当插入到我的程序
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
。同样,它在调试时工作,但在实际程序中失败。您的程序在执行此代码时是否检查错误?