Lua Переводчик Вопрос - PullRequest
       9

Lua Переводчик Вопрос

2 голосов
/ 26 ноября 2010

Как получить вывод из следующего:

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

Ответы [ 3 ]

3 голосов
/ 26 ноября 2010

Если вы хотите запустить произвольный код Lua из C, вам нужно использовать luaL_dostring, как в этом вопросе: C & Lua: luaL_dostring возвращаемое значение

Редактировать: обратите внимание, что функция Lua по умолчанию print все равно будет выводить свои выходные данные прямо на консоль. Вам нужно будет каким-то образом перенаправить стандартный вывод (возможно, в канал), если вы хотите захватить его вывод.

2 голосов
/ 26 ноября 2010

Этот код не должен работать вообще.Вы пытаетесь вызвать строку.Вам нужно поместить значение функции в стек: , затем , вызов 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
.
0 голосов
/ 26 ноября 2010

Если вы имеете в виду возвращаемое значение, оно будет на вершине стека.

Если вы имели в виду вывод из оператора print ... это немного сложнее. Предложение , которое я прочитал здесь , заключается в замене print пользовательской функцией, которая делает то, что вам нужно.

Конечно, это немного сложно, и я давно не прикасался к Луа ...

...