Lua口译员问题

时间:2010-11-25 21:19:27

标签: c lua interpreter

如何从以下输出获得输出:

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

3 个答案:

答案 0 :(得分:3)

如果您想从C运行任意Lua代码,您需要使用的是luaL_dostring,如此问题:C & Lua: luaL_dostring return value

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

答案 1 :(得分: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

答案 2 :(得分:0)

如果您的意思是返回值,它将位于堆栈的顶部。

如果你的意思是print语句的输出......这有点困难。 suggestion I read here是使用自定义函数替换print

当然,这有点复杂,我有一段时间没有接触过lua ......