mfc lib使用时必须要有头文件吗
1个回答
展开全部
我稍微详细解答一下楼主的问题。
使用MFC写东西,创建工程以后VC会自动帮你生成一个叫stdafx.h的头文件,被包含进你的工程头文件中。这时这个stdafx.h里面包含了一些必要的头文件,你看一下会发现都是afx开头。你去查找一下会发现都来自于VC98/Include/MFC这个路径下,也就是说都是MFC lib的头文件。
所以你建立的不是MFC工程又想用MFC lib那自然也得去包含那些头文件。
不过不建议这么做,原因是MFC的那些头文件里面已经包含了很多头文件,一般既然要使用MFC了就干脆在MFC框架下编程。一个很多人都遇到过的例子是,使用winsock2.h,会发现报错说afxwin已经包含了windows.h, 不应该重复包含。
解决方法是:
如果你是非MFC工程使用了MFC头文件,那重复包含的头文件必须写在includeMFC头文件之前,并在MFC头文件之前先#define一下重复文件的保护语句;
如果你是MFC工程使用了某个头文件, 例如winsock2.h, 那必须使用替代方法,包含afxsock.h,
找到其中包含其他版本的winsock的头文件的语句,替换成winsock2.h, 然后在MFC工程的stdafx.h中包含afxsock.h,这样就能使用winsock2.h了
使用MFC写东西,创建工程以后VC会自动帮你生成一个叫stdafx.h的头文件,被包含进你的工程头文件中。这时这个stdafx.h里面包含了一些必要的头文件,你看一下会发现都是afx开头。你去查找一下会发现都来自于VC98/Include/MFC这个路径下,也就是说都是MFC lib的头文件。
所以你建立的不是MFC工程又想用MFC lib那自然也得去包含那些头文件。
不过不建议这么做,原因是MFC的那些头文件里面已经包含了很多头文件,一般既然要使用MFC了就干脆在MFC框架下编程。一个很多人都遇到过的例子是,使用winsock2.h,会发现报错说afxwin已经包含了windows.h, 不应该重复包含。
解决方法是:
如果你是非MFC工程使用了MFC头文件,那重复包含的头文件必须写在includeMFC头文件之前,并在MFC头文件之前先#define一下重复文件的保护语句;
如果你是MFC工程使用了某个头文件, 例如winsock2.h, 那必须使用替代方法,包含afxsock.h,
找到其中包含其他版本的winsock的头文件的语句,替换成winsock2.h, 然后在MFC工程的stdafx.h中包含afxsock.h,这样就能使用winsock2.h了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询