2011-03-22 288 views
9


尝试编译一个小的C++程序
错误87致命错误C1189,当我得到一个错误:#错误:WINDOWS.H已经包括在内。 MFC应用程序不能#include c:\ program files \ microsoft visual studio 9.0 \ vc \ atlmfc \ include \ afxv_w32.h 16WINDOWS.H已经包括错误

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

任何原因为什么?

回答

1

默认情况下,Visual Studio会用一个预编译的头文件来玷污你的程序,这个头文件可能包含某些东西,包括windows.h。一定要在那里办理登机手续。

+0

发现包括afxwin.h正在抛出错误。然而,我确实需要afxwin.h AfxGetInstanceHandle()函数,我使用...有没有解决方法? – coderGeorge 2011-03-22 14:35:51

+0

你使用预编译头文件吗?如果是这样,你不能只是#include“stdafx.h”来拉入AfxGetInstanceHandle()的声明吗? – stijn 2011-03-22 20:13:23

14

之所以为什么是因为包括Windows.h:编译器没有对你说谎。

转到项目属性 - >配置属性 - > C/C++ - >高级并将Show Includes设置为Yes。然后建立,编译器会告诉你找到的每个包含的文件列表,并在订货它发现它,在此告诉你哪个文件最终包括WINDOWS.H

+1

谢谢!我找到了包含windows.h的afxwin.h头文件。不过,我需要使用我使用的AfxGetInstanceHandle的头文件。所以,我会要求将它包括在内。 – coderGeorge 2011-03-22 14:13:06

3
#include "afxwin.h"   // MFC core and standard components 
#include "afxext.h"   // MFC extensions 

将这些添加到我的stdafx.h文件清理出错误..hope这有助于别人。

1

在您的项目中,转至配置属性 - > C/C++ - >预编译头。确保预编译头部设置设置为使用(/ Yu)

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

0

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