如何从以下输出获得输出:
lua_pushstring(L,"print(i)");
lua_call(L,0,0);
答案 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 ......