Visual Studio 2015附加控制台I/O的问题

Jak*_*13G 5 c++ visual-c++ visual-studio-2015

我最近升级了旧项目的解决方案以使用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);
Run Code Online (Sandbox Code Playgroud)

Jam*_*lis 7

这个:

*stdout = *fp;
Run Code Online (Sandbox Code Playgroud)

无效. FILE是一种不透明的类型.你只能操作一个FILE通过标准输入输出库函数(fopen,freopen,fread等).

如果要重新打开其中一个标准流来引用控制台,一种支持的方法是:

freopen("CONOUT$", "w", stdout);
Run Code Online (Sandbox Code Playgroud)