【问题标题】:error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>"**错误 C1189:#error:WINDOWS.H 已包含在内。 MFC 应用程序不得#include <windows.h>"**
【发布时间】:2013-05-09 04:35:05
【问题描述】:

我有一个项目使用 stdafx.h 作为预编译头文件。这意味着所有 cpp 文件都必须包含 #include "stdafx.h" 作为第一个包含。

但是,在 A.h 中,我需要包含“afxinet.h”,但编译器会抱怨这个

“错误 C1189:#error : WINDOWS.H 已包含。MFC 应用不得#include "windows.h""

这是因为“afxinet.h”在包含 WINDOWS.H 时会报错,但“stdafx.h”确实包含 WINDOWS.H 并且作为 A.cpp 中的第一个包含存在。

这意味着我需要以某种方式将“afxinet.h”包含在“stdafx.h”前面,但“stdafx.h”是预编译头文件,需要作为第一个包含...

我该如何解决这个困境?

【问题讨论】:

  • 将 afxinet.h 放入 stdafx.h
  • 这是一个以其他方式使用MFC的项目吗?

标签: c++ reference header


【解决方案1】:

如果你的项目使用 MFC,那么你应该在你的 stdafx.h 中包含它的头文件,而不是使用 windows.h(因为它将被 MFC 包含);如果包含 windows.h,则不能使用 MFC。 afxinet.h 是 MFC 的一部分,所以,我想,你应该(1)用 afxwin.h 替换你的 windows.h 并在设置中“使用 MFC”(2)不要为 WinInet 使用 MFC 包装器,使用函数来自 Wininet.h

【讨论】:

  • 您能否详细解释一下(1)。我必须使用“afxinet.h”
  • 在您的 stdafx.h 中某处有 #include "windows.h"。将其替换为afxwin.h,然后包含afxinet.h,并在项目设置中设置“此项目使用MFC”;然后尝试构建。
猜你喜欢
  • 2014-03-10
  • 2014-04-29
  • 2014-11-29
  • 2016-05-17
  • 1970-01-01
  • 2020-06-07
  • 2015-12-11
  • 1970-01-01
  • 2011-10-08
相关资源
最近更新 更多