Ich habe den größten Teil meines Tages damit verbracht, herauszufinden, warum dieser Fehler auftritt, aber es verwirrt mich weiterhin.
Ich habe eine Konsolenanwendung in Visual C ++ erstellt und sie als leer angegeben. Nachdem ich alle Quellen in den virtuellen Ordner gestellt und kompiliert habe, ist ein Fehler aufgetreten:
c: \ Programme \ Microsoft Visual Studio 10.0 \ vc \ atlmfc \ include \ afx.h (24): Schwerwiegender Fehler C1189: #error: Das Erstellen einer MFC-Anwendung mit / MD [d] (CRT dll version) erfordert MFC DLL-Version freigegeben. Bitte #define_AFXDLL oder nicht / MD [d]
verwendenc: \ Programme \ Microsoft Visual Studio 10.0 \ vc \ atlmfc \ include \ afx.h (24): Schwerwiegender Fehler C1189: #error: Das Erstellen einer MFC-Anwendung mit / MD [d] (CRT dll version) erfordert MFC DLL-Version freigegeben. Bitte #define_AFXDLL oder nicht / MD [d]
verwendenc: \ Programme \ Microsoft Visual Studio 10.0 \ vc \ atlmfc \ include \ afx.h (24): Schwerwiegender Fehler C1189: #error: Das Erstellen einer MFC-Anwendung mit / MD [d] (CRT dll version) erfordert MFC DLL-Version freigegeben. Bitte #define_AFXDLL oder nicht / MD [d]
verwenden
Seltsame Fehler in der Tat, weil ich nie irgendwelche MFC-Dateien aufgenommen habe. Also habe ich die Situation behoben, indem ich in den Codegenerierungseinstellungen "/ MT" angegeben habe.
Das hat gut funktioniert ... bis ich mich entschieden habe "Windows.h" einzuschließen, was diesen Fehler hervorbrachte:
c: \ Programme \ Microsoft Visual Studio 10.0 \ vc \ atlmfc \ include \ afxv_w32.h (16): schwerwiegender Fehler C1189: # Fehler: WINDOWS.H bereits enthalten. MFC-Apps dürfen #include windows.h nicht enthalten
c: \ Programme \ Microsoft Visual Studio 10.0 \ vc \ atlmfc \ include \ afxv_w32.h (16): schwerwiegender Fehler C1189: # Fehler: WINDOWS.H bereits enthalten. MFC-Apps dürfen #include windows.h nicht enthalten
Ich habe alles versucht, was ich mir vorstellen konnte, einschließlich der Neuerstellung des Projekts mit und ohne vorkompilierte Header, einer Win32-App anstelle einer Konsole und einer WxWidget-App. Alle diese Apps versuchen anscheinend, MFC einzuschließen, obwohl ich nie angegeben habe. Kann jemand dieses Problem beleuchten? Danke!
Finden Sie heraus, was die MFC-Header enthält - die /showIncludes
-Option könnte dabei helfen.
Auf der Eigenschaftenseite des IDE-Projekts finden Sie Folgendes:
%Vor% Sobald Sie wissen, wer sie einbindet, können Sie eine Entscheidung treffen, wie Sie das Problem angehen können. Sie können möglicherweise einfach eine fehlgeschlagene #include
entfernen, aber es kann sein, dass Sie eine von MFC abhängige Bibliothek entfernen müssen .
Stellen Sie sicher, dass "USE of MFC" in der Einstellung "MFC in einer freigegebenen DLL verwenden" verwendet wird. Das hat es für mich behoben.
Wenn MFC erforderlich ist, legen Sie die folgenden Werte (Debug / Win32) fest:
Konfigurationseigenschaften & gt; Allgemein:
Verwendung von MFC: Verwenden Sie MFC in einer freigegebenen DLL
Konfigurationseigenschaften & gt; C / C ++ & gt; Codegenerierung:
Laufzeitbibliothek: / MDd
Wenn MFC nicht erforderlich ist, und nur Standardfensterbibliotheken erforderlich sind, behalten Sie die folgenden Einstellungen bei.
Konfigurationseigenschaften & gt; Allgemein:
Verwendung von MFC: Verwenden Sie Standard Windows-Bibliotheken
Konfigurationseigenschaften & gt; C / C ++ & gt; Codegenerierung:
Laufzeitbibliothek: / MTd
Tags und Links visual-studio-2010 visual-c++ mfc