#error : WINDOWS.H already included



  • Hallo Zusammen,

    arbeite mit MFC und habe obige Fehlermeldunge erhalten. Allerdings nicht zu Anfang des Projekts, sonder erst als es schon recht groß war! Im Netz findet man so Allerlei zu diesem Thema, aber nichts hat etwas gebracht. Für's Protokoll: ich habe "WINDOWS.H" nirgendwo explicit eingebunden, sondern nur "stdafx.h". Vielleicht kennt ja jemand diese Problem und kann mir helfen. Wäre echt glücklich, wenn ich diese Problem endgültig los würde! Vielen Dank schon mal!


  • Mod

    Dann schau doch in Deine stdafx.h rein. Die Datei gehört doch zu Deinem Projekt.

    Grundsätzlich wird die windows.h in MFC Projekten nie included! Durch Include der afx.h oder afxwin.h wird auch die windows.h gezogen!



  • in der stdafx.h wird windows.h auch nicht included...

    // stdafx.h : Includedatei für Standardsystem-Includedateien
    // oder häufig verwendete, projektspezifische Includedateien,
    // die nur selten geändert werden.
    
    #pragma once
    
    #ifndef _SECURE_ATL
    #define _SECURE_ATL 1
    #endif
    
    #ifndef VC_EXTRALEAN
    #define VC_EXTRALEAN		// Selten verwendete Teile der Windows-Header ausschließen
    #endif
    
    // Ändern Sie folgende Definitionen für Plattformen, die älter als die unten angegebenen sind.
    // Unter MSDN finden Sie die neuesten Informationen über die entsprechenden Werte für die unterschiedlichen Plattformen.
    #ifndef WINVER				// Lassen Sie die Verwendung spezifischer Features von Windows XP oder später zu.
    #define WINVER 0x0501		// Ändern Sie den entsprechenden Wert, um auf andere Versionen von Windows abzuzielen.
    #endif
    
    #ifndef _WIN32_WINNT		// Lassen Sie die Verwendung spezifischer Features von Windows XP oder später zu.                   
    #define _WIN32_WINNT 0x0501	// Ändern Sie den entsprechenden Wert, um auf andere Versionen von Windows abzuzielen.
    #endif						
    
    #ifndef _WIN32_WINDOWS		// Lassen Sie die Verwendung spezifischer Features von Windows 98 oder später zu.
    #define _WIN32_WINDOWS 0x0410 // Ändern Sie den entsprechenden Wert, um auf mindestens Windows Me abzuzielen.
    #endif
    
    #ifndef _WIN32_IE			// Lassen Sie die Verwendung spezifischer Features von IE 6.0 oder später zu.
    #define _WIN32_IE 0x0600	// Ändern Sie den entsprechenden Wert, um auf andere Versionen von IE abzuzielen.
    #endif
    
    #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS	// einige CString-Konstruktoren sind explizit
    
    // Deaktiviert das Ausblenden einiger häufiger und oft ignorierter Warnungen durch MFC
    #define _AFX_ALL_WARNINGS
    
    #include <afxwin.h>         // MFC-Kern- und -Standardkomponenten
    #include <afxext.h>         // MFC-Erweiterungen
    
    #include <afxdisp.h>        // MFC-Automatisierungsklassen
    
    #ifndef _AFX_NO_OLE_SUPPORT
    #include <afxdtctl.h>		// MFC-Unterstützung für allgemeine Steuerelemente von Internet Explorer 4
    #endif
    #ifndef _AFX_NO_AFXCMN_SUPPORT
    #include <afxcmn.h>			// MFC-Unterstützung für allgemeine Windows-Steuerelemente
    #endif // _AFX_NO_AFXCMN_SUPPORT
    
    #ifdef _UNICODE
    #if defined _M_IX86
    #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
    #elif defined _M_IA64
    #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
    #elif defined _M_X64
    #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
    #else
    #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
    #endif
    #endif
    


  • Thor.VS2015 schrieb:

    Allerdings nicht zu Anfang des Projekts, sonder erst als es schon recht groß war!

    Geh auf einen Stand zurück wo es noch funktioniert hat. Und dann schrittweise so weit nach vorn bis es nicht mehr geht.
    Dann guck dir an was zwischen diesen beiden Ständen bezüglich #include s und #define s geändert wurde.


  • Mod

    /showincludes Option verwenden!



  • hustbaer schrieb:

    Thor.VS2015 schrieb:

    Allerdings nicht zu Anfang des Projekts, sonder erst als es schon recht groß war!

    Geh auf einen Stand zurück wo es noch funktioniert hat. Und dann schrittweise so weit nach vorn bis es nicht mehr geht.
    Dann guck dir an was zwischen diesen beiden Ständen bezüglich #include s und #define s geändert wurde.

    Das habe ich bereits gemacht und das Ergebnis war etwas irritierend: Ich habe ein zsätzliches Dateipaar (.cpp / .h) hinzugefügt, das "windows.h" NICHT eingebunden hatte und der Fehler trat auf! Ich hätte gerne ein nachvollziehbare Erklärung für das Ganze und dann auch eine ebenso nachvollziehbare UND reproduzierbare Lösung - ansonsten passiert beim nächsten Projekt wieder das Gleiche. Das Ganze kommt mir eher so vor, als ob die MFC nicht so recht zum Rest von Visual Studio passen würde...



  • Martin Richter schrieb:

    /showincludes Option verwenden!

    ich habe folgendes gefunden:

    C:\Program Files (x86)\Windows Kits\8.1\Include\um\windows.h
    

    Und das ganze 9x! Explicit habe ich die h-Datei genau keinmal eingebunden. Was kann man da tun?


  • Mod

    Du siehst doch nun welches Modul die Datei verwendet...
    Da stimmt eben was nicht.



  • Thor.VS2013 schrieb:

    Das habe ich bereits gemacht und das Ergebnis war etwas irritierend: Ich habe ein zsätzliches Dateipaar (.cpp / .h) hinzugefügt, das "windows.h" NICHT eingebunden hatte und der Fehler trat auf! Ich hätte gerne ein nachvollziehbare Erklärung für das Ganze und dann auch eine ebenso nachvollziehbare UND reproduzierbare Lösung - ansonsten passiert beim nächsten Projekt wieder das Gleiche. Das Ganze kommt mir eher so vor, als ob die MFC nicht so recht zum Rest von Visual Studio passen würde...

    Wenn du rausbekommen hast welche Dateien es waren die das Problem auslösen, dann guck dir vielleicht diese Dateien mal an?
    Fang an da drinnen #include und #define Anweisungen auszukommentieren bis das Problem weg ist.

    Wenn wir dir jeden einzelnen Schritt erklären müssen wird das recht lange dauern.



  • Thor.VS2013 schrieb:

    C:\Program Files (x86)\Windows Kits\8.1\Include\um\windows.h
    

    Und das ganze 9x! Explicit habe ich die h-Datei genau keinmal eingebunden. Was kann man da tun?

    Nichts. Weinen. Formatieren und ganz von vorn anfangen.



  • Martin Richter schrieb:

    Du siehst doch nun welches Modul die Datei verwendet...
    Da stimmt eben was nicht.

    Es ist eine Modul, dass "afxwin.h" included, welches wiederum "windows.h" (implizit) included. "afxwin.h" wird allerdings für die CStrings in dem Modul gebraucht... Und dann gibt's da ja noch die anderen...
    Die CStrings sind doch eigentlich MFC-Klassen, oder? Die MFC scheint includs zu verlangen, die zu weiteren includs führen, welche mit der MFC nicht funktionieren... 😕


  • Mod

    Zeig mal die gesamte Ausgabe, wenn Du einen Rebuild machst.
    afxwin.h führt natürlich einen include der windows.h aus.

    Ansonsten wenn es nicht zu geheim ist, schick mir per mail einen Link auf eine Kopie Deines Projektes.



  • Martin Richter schrieb:

    Zeig mal die gesamte Ausgabe, wenn Du einen Rebuild machst.
    afxwin.h führt natürlich einen include der windows.h aus.

    Ansonsten wenn es nicht zu geheim ist, schick mir per mail einen Link auf eine Kopie Deines Projektes.

    Vielen Dank für das Hilfsangebot! Aber ich fürchte ich kann weder die gesamte Ausgabe und schon gar nicht das Projekt veröffentlichen - leider tatsächlich alles streng vertraulich... Inzwischen spinnt die Kiste hier total: Er meckert jetzt schon dass er die stadafx.h nicht mehr lesen kann (corrupted od. ähnlches) obwohl die Datei völlig in Ordnung ist! Eventuell is auch die virtuelle Machine beschädigt. Notfalls setze ich das Projekt neu auf und verwende halt die entscheidenden Codestücke wieder.

    Aber nochmal herzlichen Dank für die Unterstützung!


Log in to reply