【问题标题】:Lua I/O works while debugging, but not in the program properLua I/O 在调试时工作,但在程序中不正确
【发布时间】:2012-11-25 21:58:49
【问题描述】:

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

【问题讨论】:

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

标签: debugging file-io io lua lua-5.2


【解决方案1】:

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

luaL_openlibs(lua);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    相关资源
    最近更新 更多