【问题标题】:WINDOWS.H already included errorWINDOWS.H 已经包含错误
【发布时间】:2011-03-22 13:49:39
【问题描述】:


尝试编译小型 c++ 程序时出现错误
错误 87 致命错误 C1189:#error:WINDOWS.H 已包含。 MFC 应用不得#include c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxv_w32.h 16

我确保 windows.h 不包含在我拥有的任何项目文件中。我正在使用 Visual Studio 2008 IDE

有什么理由吗?

【问题讨论】:

    标签: visual-studio-2008 compilation


    【解决方案1】:

    原因是因为某些东西包括Windows.h:编译器没有骗你。

    转到项目属性->配置属性->C/C++->高级并将显示包含设置为是。然后构建,编译器会显示一个列表,其中包含找到的每个包含文件,并按照找到它的顺序,从而告诉您最终包含哪个文件 windows.h

    【讨论】:

    • 谢谢!我发现 afxwin.h 标头包含 windows.h 。但是,我需要此标头用于我使用的 AfxGetInstanceHandle。所以,我会要求它被包括在内。
    【解决方案2】:

    尝试在 stdafx.h 之前包含 afxcoll.h。我有同样的问题,它解决了它。 有关原始讨论,请参阅http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/2ab6862f-0d90-467a-b283-f62f6aef96fe/

    【讨论】:

    • 在我的 stdafx.h 文件中的 atlstr.h 之前包含 afxcol.h 解决了我的问题
    【解决方案3】:
    #include "afxwin.h"         // MFC core and standard components
    #include "afxext.h"         // MFC extensions
    

    将这些添加到我的 stdafx.h 文件中可以解决该错误。希望这对其他人有帮助。

    【讨论】:

      【解决方案4】:

      默认情况下,Visual Studio 将使用预编译的头文件污染您的程序,该头文件可能包含包含 windows.h 的内容。一定要在那里签到。

      【讨论】:

      • 发现包含 afxwin.h 会引发错误。但是,对于我使用的 AfxGetInstanceHandle() 函数,我确实需要 afxwin.h ... 有解决方法吗?
      • 你使用预编译的头文件吗?如果是这样,您不能只 #include "stdafx.h" 来拉入 AfxGetInstanceHandle() 的声明吗?
      【解决方案5】:

      在您的项目中转到配置属性-> C/C++ -> 预编译头文件。确保 Precompiled Header 设置为 Use(/Yu)

      此设置“允许在构建期间创建或使用预编译头”。

      【讨论】:

        【解决方案6】:

        我遇到的问题是“stdafx.h”文件包含在“StdAfx.h”文件中,并且配置属性->C/C++->预编译头文件中的文件名从未从“stdafx.h”更新。 h”到“StdAfx.h”。

        【讨论】:

          猜你喜欢
          • 2016-05-17
          • 2013-01-07
          • 1970-01-01
          • 2015-12-22
          • 2015-12-11
          • 2013-05-09
          • 1970-01-01
          • 1970-01-01
          • 2010-12-27
          相关资源
          最近更新 更多