非MFC工程使用MFC库时的问题及解决办法(转载)
非MFC工程使用MFC库时最常见的问题就是windows.h重复包含错误,具体如下:
fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #i nclude <windows.h>
1、工程à设置中,将MFC的使用由原来的“no using MFC(不使用MFC)”改为“Use MFC in a shared dll(在共享DLL中使用MFC)”
2、头文件包含
不同的MFC类需包含的头文件是不一样的。
常用的类,如CString, CEdit 等,包含afxwin.h就可以了,CFileFind需要包含afx.h,即#i nclude <afx.h>
如果不清楚包含什么头文件的话,可以同msdn进行查询,msdn中,对于MFC类的介绍中,都会给出相应的header file requirement.
3、#include 语句一定要写在首行
这一点很重要,通常出现前面讲到的windows.h重复包含错误,都是因为#i nclude 语句没有写在首行。
另外还要注意的是,如果#i nclude语句是在一个头文件里,那么对应头文件的包含也要写在首行。示例如下:
=============
test.h文件的内容如下:
#include <afxwin.h> //保证该语句在首行
#include …
test.cpp的文件内容如下:
#i nclude “test.h” //同样也要保证该语句在首行
#include …
=============