Probleme nach Update von Visual Studio C++ 2005



  • Vielen Dank für die wirklich superschnelle Antwort, sie hilft mir leider nicht wirklich weiter:
    Zum einen: der Code stammt gar nicht von mir sondern wurde vom Anwendungs-Assistent von Visual Studio 2005 so generiert. Ich möchte - im speziellen Fall -nur eine Konsoleanwendung erzeugen unter Nutzung der MFC.
    Wo der Verweis auf die <string.h> tatsächlich steht, ist aus dem generierten Code auch nicht ersichtlich, ich kann es daher auch gar nicht ändern.

    Zum andere:
    Ich bin ein (oldfashioned?) MFC-Programmierer und möchte/muß meine alten MFC-Projekte weiterhin nutzen und pflegen, habe daher erstmal auch keine Zeit mich mit der STL auseinander zu setzen. Ich war froh, dass ich mit dem Umstieg von Visual C++ auf Visual Studio 2005 einergermaßen klar kam. Das ganze hat ja bis vor dem Update auch alles noch funktioniert, auch mit <String.h>.

    Was kann ich tun 😕 ?

    christoph.


  • Mod

    Du liest nicht was ich geschrieben habe.

    Verwende bitte nicht #include <string**.h**>
    verwende bitte #include <string> ⚠

    Das hat nichts mit oldfashonied zu tun, aber wnen Du schon die STL verwendest, und das machst du, dann solltest und musst Du es auch richtig machen.



  • Hallo, ich habe durchaus gelesen was du geschrieben hast, habe es (glaube ich) sogar verstanden, bin mir aber nicht sicher ob du gelesen hast was ich geschrieben habe:

    Ich möchte die STL nicht verwenden. Wenn ich das - wie du schreibst (unbeabsichtigt) tue - den hilf' mir bitte das zu verhindern. Wo schalt' ich das ab?

    Ausserdem kann ich die include Anweisung nicht ändern, da sie in dem automatisch generierten, Code nicht auftaucht. Die übrigens ebenfalls mitgenerierte stdafx.h strotz zwar vor Headerdateien mit der endung .h eine string.h ist nicht dabei.



  • Wo der Verweis auf die <string.h> tatsächlich steht, ist aus dem generierten Code auch nicht ersichtlich, ich kann es daher auch gar nicht ändern.

    Du könntest in deinem Code suchen...


  • Mod

    string.h wird in keinem von der MFC generierten Code verwendet!



  • Alle suchen "#include "string.h"", Unterordner, Suchergebnisse: 1, "Gesamte Projektmappe"
    Übereinstimmende Zeilen: 0 Übereinstimmende Dateien: 0 Insgesamt durchsuchte Dateien: 7



  • such doch mal nur nach string.h..


  • Mod

    Zeig mal Deine stdafx.h! Den in der passiert es ja.

    Verwendest Du eine fremde Library?



  • Anbei die stdafx.h
    Habe übrigens auf einem anderen System Visual Studio 2005 von den Original CDs neu installiert. Dort taucht das Problem nicht auf.

    // stdafx.h : Includedatei für Standardsystem-Includedateien
    // oder häufig verwendete projektspezifische Includedateien,
    // die nur in unregelmäßigen Abständen geändert werden.
    //
    
    #pragma once
    
    // Ändern Sie folgende Definitionen für Plattformen, die älter als die unten angegebenen sind.
    // In 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 dies in den geeigneten Wert für andere Versionen von Windows.
    #endif
    
    #ifndef _WIN32_WINNT		// Lassen Sie die Verwendung spezifischer Features von Windows XP oder später zu.                   
    #define _WIN32_WINNT 0x0501	// Ändern Sie dies in den geeigneten Wert für andere Versionen von Windows.
    #endif						
    
    #ifndef _WIN32_WINDOWS		// Lassen Sie die Verwendung spezifischer Features von Windows 98 oder später zu.
    #define _WIN32_WINDOWS 0x0410 // Ändern Sie dies in den geeigneten Wert für Windows Me oder höher.
    #endif
    
    #ifndef _WIN32_IE			// Lassen Sie die Verwendung spezifischer Features von IE 6.0 oder später zu.
    #define _WIN32_IE 0x0600	// Ändern Sie dies in den geeigneten Wert für andere Versionen von IE.
    #endif
    
    #include <stdio.h>
    #include <tchar.h>
    #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS	// Einige CString-Konstruktoren sind explizit.
    
    #ifndef VC_EXTRALEAN
    #define VC_EXTRALEAN		// Selten verwendete Teile der Windows-Header nicht einbinden.
    #endif
    
    #include <afx.h>
    #include <afxwin.h>         // MFC-Kern- und Standardkomponenten
    #include <afxext.h>         // MFC-Erweiterungen
    #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
    
    #include <iostream>
    
    // TODO: Hier auf zusätzliche Header, die das Programm erfordert, verweisen.
    


  • #include <iostream> inkludiert <string>.
    Hier ist ein Problem.

    Allerdings wird <iostream> automatisch inkludiert, wenn ein Win32 Consolen Projekt mit MFC unterstützung angelegt wird... (getestet mit VS2005 SP1).

    Nimms mal #include <iostream> raus..

    Simon


  • Mod

    In dieser Form dürfte iostream kein Problem sein. So verwende ich es hundertfach.
    Das Problem ist, dass irgendwo string.h verwendet wir.

    Verwende mal die Compiler Option /showincludes dann siehst Du wer string.h zieht.



  • Sorry, dass es etwas gedauert hat...

    Wo ist die <string.h>?

    tja, alle Wege führen nicht nur nach Rom, sondern auch zu <string.h>.

    Egal, welches #include statement ich wegnehme, irgendwo steckt immer die string.h.
    Selbst <iostream> führt letztendlich dorthin.
    Daran kanns also nicht liegen. Es kann ja doch auch nicht wahr sein, dass ich die von MS mitgelieferten, header-Dateien korrigiere um diesen Fehler zu beheben!

    Da ja alles erst nach meinem Update passierte, habe ich jetzt Visual Studio 2005 deinstalliert und von den CD's neu installiert...

    und siehe da, funzt alles wieder! Der selbe Code, die selben includes...

    Ich danke euch für eure Hilfe und eure Zeit.


Anmelden zum Antworten