Visual Studio 2010 enthält MFC, obwohl eine leere Konsolenanwendung angegeben ist (C ++)

8

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]

verwenden      

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]

verwenden      

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]

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!

    
Dr.Mcninja 14.05.2011, 03:57
quelle

3 Antworten

7

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 .

    
Michael Burr 14.05.2011, 04:10
quelle
5

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.

    
John Councill 14.02.2012 14:02
quelle
2

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

    
AKN 21.01.2014 12:35
quelle