最近手里面有个控制的一个软件项目,不需要考虑界面,于是就使用控制台来编写程序,随着模块的逐步加入,有些模块使用到了MFC的类,在编译的时候提示:MFC must not use #include "windows.h"这个错误。含MFC模块中的CString类功能强大,如果修改替换他那么工作量是很大的。经过如下操作就可以顺利编译了
1:右击工程名 -> References
2:Configuration Properties ->Use of MFC ->Use MFC in a Shared DLL
3:在stdafx.h的头文件加入如下代码:
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN
#endif
#include <afx.h>
#include <afxwin.h>
#include <afxext.h>
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h>
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>
#endif // _AFX_NO_AFXCMN_SUPPORT
另外在c++中LPCTSTR不能强转char *必须使用这种形式:char tempbuf[260] = { 0 }; strcpy_s(tempbuf, 260, CT2CA(LPCTSTR));
总结:所以在使用c++编程要注意类型的转换,不能理想当然去强转。