mfc lib使用时必须要有头文件吗
答案:1 悬赏:30 手机版
解决时间 2021-04-18 18:50
- 提问者网友:几叶到寒
- 2021-04-18 01:15
mfc lib使用时必须要有头文件吗
最佳答案
- 五星知识达人网友:傲气稳了全场
- 2021-04-18 02:53
我稍微详细解答一下楼主的问题。
使用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了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯