【发布时间】:2013-08-26 23:03:28
【问题描述】:
我正在使用 qml( qtCreator ) 和 cpp (visual studio)。
通常错误消息会显示在控制台上,来自 cpp 和 qml。
我的要求是我不应该有控制台。
所以我写了一个窗口应用程序。
但是当一个标志被设置后,我应该启动一个控制台。并在那里显示相应的错误信息。
我在函数中使用了以下代码来设置它。
HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE);
int hCrt = _open_osfhandle((long) handle_out, _O_TEXT);
FILE* hf_out = _fdopen(hCrt, "w");
setvbuf(hf_out, NULL, _IONBF, 128);
// redirecting the buffers to the file handle
*stdout = *hf_out;
*stderr = *hf_out;
//attach std input to console
HANDLE handle_in = GetStdHandle(STD_INPUT_HANDLE);
hCrt = _open_osfhandle((long) handle_in, _O_TEXT);
FILE* hf_in = _fdopen(hCrt, "r");
setvbuf(hf_in, NULL, _IONBF, 128);
*stdin = *hf_in;
这会将错误日志从 stdout 和 stderr 打印到控制台。
我们可以使用重定向qt错误日志。
How to redirect qDebug, qWarning, qCritical etc output?
但是我们如何将qml的console.log()的输出重定向到控制台。
提前致谢。
【问题讨论】:
-
-1 “不必要的平台特定”只是我对这段代码所说的委婉说法