VS2015 、VS2017 MFC输出日志到控制台窗口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2015 、VS2017 MFC输出日志到控制台窗口相关的知识,希望对你有一定的参考价值。

参考技术A 在做DLL库的时候经常会通过printf打印一些调试信息,但是MFC项目引用后printf信息是无法输出到调试窗口的,网上一些说通过AllocConsole();打开命令窗口在VS2017中竟然不好用,最终经过网络寻找到可用方法:

在vs中打开你的解决方案。

鼠标移动到你的项目名称上,点击鼠标右键,再点击属性,此刻会此项目的属性页。

在配置属性中,找到生成事件,在找到后期生成事件。

在命令行的右边空白处添加“editbin /SUBSYSTEM:CONSOLE $(OUTDIR)$(ProjectName).exe”,点击确定。

以上4步就已经ok了,此时运行你的程序,会多弹出一个黑色命令行的提示框,用来输出你的打印信息。

VS2017 显示控制台窗口

1. 在vs中打开你的解决方案。

2. 鼠标移动到你的项目名称上,点击鼠标右键,再点击属性,此刻会此项目的属性页。

3. 在配置属性中,找到生成事件,在找到后期生成事件。

4. 在命令行的右边空白处添加:editbin /SUBSYSTEM:CONSOLE $(OUTDIR)\$(ProjectName).exe,点击确定。

5. 以上4步就已经ok了,此时运行你的程序,会多弹出一个黑色命令行的提示框,用来输出你的打印信息

OCC平台转到VS2015下MFC程序调用控制台失败解决办法

文章转自:https://blog.csdn.net/c437yuyang/article/details/54944668

      一直用vs2010对occ进行编译,前几天转到vs2015平台下,好不容易花了两天的时间重新配置好了,但是发现控制台无法输入输出,一开始没在意,但是后面调试时很不方便,就决定将控制台调回来。

       一开始以为是程序出错,引入了不同的输入输出流函数等,导致流无法定位,于是在头文件里面屏蔽了相关的

#include <iostream> ,#include <fstream>等,但是仍然没有用。

后面尝试在函数里面新建控制台:

 1 void CMyLattice::MakeComKernel()
 2 {
 3     AllocConsole();
 4     long ct1=GetTickCount();
 5           *
 6           *
 7           *
 8     long ct2=GetTickCount();//程序段结束后取得系统运行时间(ms)    
 9     _cprintf ("bool filter time:",ct2-ct1);
10     FreeConsole();
11 }

但是太过于麻烦,而且输入较不便!

      最后考虑可能是vs2015版本问题,找到一篇csdn博客,遇到同样的问题,解决办法如下:

一开始的构建函数如下所示:
BOOL CLiu_OccApp::InitInstance()
{
    .
.
.
// Redirection of standard output to console int hCrt,hIn; BOOL rep; FILE *hf,*hi; _SYSTEM_INFO lps; GetSystemInfo(&lps); rep = AllocConsole(); hCrt = _open_osfhandle((intptr_t) GetStdHandle(STD_OUTPUT_HANDLE),_O_TEXT); hIn = _open_osfhandle((intptr_t) GetStdHandle(STD_INPUT_HANDLE),_O_TEXT); hf = _fdopen( hCrt, "w" ); hi = _fdopen( hIn, "r+t" ); //重定向输入输出 freopen_s(&pf,"CONOUT$","w",stdout); *stdout = *hf; *stdin = *hi; . . . }

改为:

BOOL CLiu_OccApp::InitInstance()
{    
.
.
.
if (!AllocConsole() || !freopen("CONOUT$", "w", stdout)) AfxMessageBox(_T("InitConsoleWindow Failed!")); //分配控制台在重定向输出流至控制台
     .
.
.
 }

即可。

 








以上是关于VS2015 、VS2017 MFC输出日志到控制台窗口的主要内容,如果未能解决你的问题,请参考以下文章

OCC平台转到VS2015下MFC程序调用控制台失败解决办法

VS2017 MFC 类向导 - 如何像在 VS2015 中一样使用它

在VS2015中使用MFC,程序生成的窗口看不到,求解。

VS2015 MFC - 如何将静态库资源链接到项目

VS2017 新建MFC项目时只有ATL选择,怎么才能建有窗体的MFC?

我安装vs2017时安装的c++没安mfc请问怎么单独添加这个组件