为什么总是报MFC apps must not #include 的错误

addition 2003-07-12 12:04:43
总是有这个错:
d:\program files\microsoft visual studio\vc98\mfc\include\afxv_w32.h(14) : fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>


这的是下面的一行:
#ifdef _WINDOWS_
#error WINDOWS.H already included. MFC apps must not #include <windows.h>
#endif
...全文
2103 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuhongyong 2003-07-12
  • 打赏
  • 举报
回复
对,就是楼上说的。
StdAfx 2003-07-12
  • 打赏
  • 举报
回复
这种情况是因为你在 stdafx.h里面有这么一句话 #include <windows.h> 而引起的。

你把这句话去掉就可以了。
cy214 2003-07-12
  • 打赏
  • 举报
回复
你的工程中是否有文件include了windows.h ?
kongxinmark 2003-07-12
  • 打赏
  • 举报
回复
windows.h 被拆装了。你在你写的任何地方都不用在加入了
addition 2003-07-12
  • 打赏
  • 举报
回复
哎,有出来这个错误,好像休息一段时间,这些错误又慢慢的一个一个的出来
现在我确实按照方法二来的。不行,又按照方法一,把所有有windows.h的include全部注释,还是报WINDOWS.H already included. MFC apps must not #include <windows.h>的错误。


感觉很不稳定似的,开始又这个错误,我改来改去的,没了这个错误,其它的问题一个个得来
这是以为这个问题好像已经解决,是其他问题。
现在一会儿又来了。

高手出招吧。
addition 2003-07-12
  • 打赏
  • 举报
回复
o,我现在想问个究竟,报这个错是不是就是tj_aj(Stray) 说的那样,
只要保证这两点做到其一,就不是这个问题了。

前面那些一大段的我写的就作为废话吧,我都觉得很乱。
了解了这个,马上结贴。
tj_aj 2003-07-12
  • 打赏
  • 举报
回复
我认为这两种方法都是可以的,当然没有试过,看其他人意见吧。
你只要保证这两点做到其一,就不是这个问题了。
就是其他问题,和这个无关了。
tj_aj 2003-07-12
  • 打赏
  • 举报
回复
方法一:
去掉#include <windows.h>


方法二:
比如说,你的 #include <windows.h>包括在了 abc.h文件中,而你的 stdafx.h里面又#include "abc.h"之类的。
那么#include "abc.h"放在诸如#include <afx***.h>后面。
放在#include <afx***.h>前面就会报上面说的错误。

楼下的接着说,或者指出我的错误。嘿嘿
addition 2003-07-12
  • 打赏
  • 举报
回复
都是各个向导不同导致的,用不同的向导就有不同的问题。
比如用atl com wizard选择支持mfc,
和alt com wizard不支持mfc,但是建好工程后,setting里面的general也选择用mfc
这两者好像就很不一样。

然后又用mfc active controlWizard建的工程,把我写的类移进去,结果又是不一样
addition 2003-07-12
  • 打赏
  • 举报
回复
是这样的,我今天要把原来用atl control写的移到active control写的里面去,结果不停的开新工程,竟然有不同的报错,真是太怪了,像现在
WINDOWS.H already included不报了。
还有http://expert.csdn.net/Expert/topic/2020/2020502.xml?temp=.4609491
主  题: 为什么这样编译能通过?
中说的error C2504: 'classParent' : base class undefined
的错误也不报了,报的是
error LNK2001: unresolved external symbol "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A)
的错误。

我觉得真是奇怪,其实每次重新弄工程我好像都是差不多的动作,结果总是乱七八糟的各种各样的问题。
addition 2003-07-12
  • 打赏
  • 举报
回复
有很多文件,比如abc.h,很久以前是基于sdk的,当然有不少#include <windows.h>,很正常。
现在要移到和mfc相关的工程中,(其实很早就移了,一直好好的。)
这些文件在stdAfx.h中被include.就像你说的stdafx.h里面又#include "abc.h"之类的。
以前好好的啊,我认为可能是#include "abc.h"放在诸如#include <afxctl.h>后面的就可以了吧。放在#include <afxctl.h>前面就会报上面说的错误。

好像是这样理解的,但是现在有其它的很多错误,好像就是去掉#include <windows.h>导致的,
所以我又不想去掉它了,重新弄工程,把#include "abc.h"放在诸如#include <afxctl.h>后
面,但是又有下面的错误。

strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A)
strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "int g_cTemplates" (?g_cTemplates@@3HA)
可以看看我的新贴子:
http://expert.csdn.net/Expert/topic/2020/2020502.xml?temp=.4609491
主  题: 为什么这样编译能通过?

反正感觉很乱得很怪的,我都不知道那个是对的,那个是错的。
StdAfx 2003-07-12
  • 打赏
  • 举报
回复
我真不明白你是想解决问题呢还是干别的?

好了,不管你是想解决问题还是想问过究竟,你现在告诉我你这个 #include <windows.h>现在包括在了哪个文件中?这个文件和stdafx.h有什么联系?

比如说,你的 #include <windows.h>包括在了 abc.h文件中,而你的 stdafx.h里面又#include "abc.h"之类的。

zhouyong0371 2003-07-12
  • 打赏
  • 举报
回复
去掉#include <windows.h>
fantiyu 2003-07-12
  • 打赏
  • 举报
回复
#include <windows.h>去掉
addition 2003-07-12
  • 打赏
  • 举报
回复
我现在不是在stdAfx.h中有#include <windows.h>,而是其他文件中有。

但是以前的工程中其实windows.h和afxWin.h共存的情况也是又的,一直好好的。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧