OCC平台转到VS2015下MFC程序调用控制台失败解决办法
Posted jeasonliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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!")); //分配控制台在重定向输出流至控制台
.
.
.
}
即可。
以上是关于OCC平台转到VS2015下MFC程序调用控制台失败解决办法的主要内容,如果未能解决你的问题,请参考以下文章