2011-03-22 282 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「。