【问题标题】:Lua Interpreter QuestionLua 解释器问题
【发布时间】:2010-11-26 10:58:24
【问题描述】:

如何获得以下输出:

lua_pushstring(L,"print(i)");
lua_call(L,0,0);

【问题讨论】:

    标签: c lua interpreter


    【解决方案1】:

    如果你想从 C 中运行任意 Lua 代码,你需要使用 luaL_dostring,如这个问题:C & Lua: luaL_dostring return value

    编辑:请注意 Lua 的默认 print 函数仍会将其输出直接打印到控制台。如果要捕获其输出,则需要以某种方式重定向标准输出(可能是管道)。

    【讨论】:

      【解决方案2】:

      该代码根本不应该工作。您正在尝试调用字符串。您需要将一个函数值压入堆栈,然后调用lua_call

      lua_getglobal(L, "print");          // push print function onto the stack
      lua_pushstring(L, "Hello, World!"); // push an argument onto the stack
      lua_call(L,1,0);                    // invoke 'print' with 1 argument
      

      【讨论】:

        【解决方案3】:

        如果你的意思是返回值,它将在堆栈的顶部。

        如果您指的是 print 语句的输出...那就有点困难了。 suggestion I read here 是将 print 替换为满足您需要的自定义函数。

        当然,这个有点复杂,也有一段时间没接触lua了……

        【讨论】:

        • 我希望它能够像在 Lua Standalone 解释器中那样为我提供输出。
        • 这并没有说明问题。你的意思是它如何将文本打印到控制台?
        猜你喜欢
        • 2011-05-16
        • 2010-10-13
        • 2014-08-05
        • 1970-01-01
        • 1970-01-01
        • 2022-09-28
        • 1970-01-01
        • 2015-03-28
        • 1970-01-01
        相关资源
        最近更新 更多