在做DLL库的时候经常会通过printf打印一些调试信息,但是MFC项目引用后printf信息是无法输出到调试窗口的,网上一些说通过AllocConsole();打开命令窗口在VS2017中竟然不好用,最终经过网络寻找到可用方法:
- 在vs中打开你的解决方案。
- 鼠标移动到你的项目名称上,点击鼠标右键,再点击属性,此刻会此项目的属性页。
- 在配置属性中,找到生成事件,在找到后期生成事件。
- 在命令行的右边空白处添加“editbin /SUBSYSTEM:CONSOLE $(OUTDIR)$(ProjectName).exe”,点击确定。
- 以上4步就已经ok了,此时运行你的程序,会多弹出一个黑色命令行的提示框,用来输出你的打印信息。
- 代码配置:
在生成的stdafx.h文件中引入:
#include <io.h>
#include <fcntl.h>
#include <stdio.h>
在入口中处调用:
void InitConsoleWindow()
{
int nCrt = 0;
FILE* fp;
AllocConsole();
nCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
fp = _fdopen(nCrt, "w");
*stdout = *fp;
setvbuf(stdout, NULL, _IONBF, 0);
}
BOOL Test_usb_otaDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
....
InitConsoleWindow();
printf("test\n");
}
VS2017 显示控制台窗口
1. 在vs中打开你的解决方案。
2. 鼠标移动到你的项目名称上,点击鼠标右键,再点击属性,此刻会此项目的属性页。
3. 在配置属性中,找到生成事件,在找到后期生成事件。
4. 在命令行的右边空白处添加:editbin /SUBSYSTEM:CONSOLE $(OUTDIR)\$(ProjectName).exe,点击确定。
5. 以上4步就已经ok了,此时运行你的程序,会多弹出一个黑色命令行的提示框,用来输出你的打印信息