我最近将旧项目的解决方案升级为使用Visual Studio2015。该应用程序运行一个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);
这:
*stdout = *fp;
无效。FILE
是不透明的类型。你只能操作一个FILE
通过标准输入输出库函数(fopen
,freopen
,fread
等)。
如果要重新打开标准流之一以引用控制台,则一种受支持的方法是:
freopen("CONOUT$", "w", stdout);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句