我最近升级了旧项目的解决方案以使用visual studio 2015.该应用程序运行一个opengl应用程序。应用程序为输出分配单独的控制台。我使用控制台从我的opengl应用程序中输出相关的调试信息。
我已完全升级了我的项目并且工作正常。我的问题是,在升级我的项目以使用Visual Studio 2013(v120)工具集中的Visual Studio 2015(v140)工具集时,当我使用任何控制台输出函数(stdio.h或iostream)时,控制台不会显示任何信息。这使调试变得更加痛苦。
要清楚我可以将我的项目交换回使用Visual Studio 2013(v120)工具集,当我输出到控制台时,控制台将显示信息。
是否有人了解新工具集阻止我在控制台窗口中查看信息的原因?我打算以不同方式设置控制台吗?
链接控制台输出重定向的清晰简单示例。 (我会举出更多例子,但我的链接有限) http://asawicki.info/news_1326_redirecting_standard_io_to_windows_console.html
我的控制台输出创建示例:
AllocConsole();
long lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
int hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
FILE *fp = _fdopen(hConHandle, "w");
*stdout = *fp;
setvbuf(stdout, NULL, _IONBF, 0);
答案 0 :(得分:7)
此:
*stdout = *fp;
无效。 FILE
是一种不透明的类型。您只能通过stdio库函数(FILE
,fopen
,freopen
等)操纵fread
。
如果要重新打开其中一个标准流来引用控制台,可以采用一种支持的方式:
freopen("CONOUT$", "w", stdout);
答案 1 :(得分:0)
检查你的调试中的内容 - >选项和设置 - >调试 - > VS中的输出窗口。
对我来说效果很好,如果在第一个标签中一切都打开并且第二个标签关闭(数据绑定中的错误)。
希望能够发挥作用。