vorkimpilierte Header defekt



  • Hallo,

    habe ein Problem mit den vorkompilierten Headern in VS2008.

    In meinen einzelnen Codefiles steht

    #include "stdafx.h"
    

    In einer einzigen Datei kommt da ein Fehler, dass die Datai stdafx.h nicht gefunden werden kann. Die Code-Datei steht in einem Unterordner zusammen mit anderen Code-Dateien, die ebenfalls stdafx.h einladen. Bei dem Kompilieren der anderen kommt die Fehlermeldung nicht.

    Nun habe ich die Verwendung von vorkompilierten Headern mal ausgeschaltet und damit Schiffbruch erlitten. Danach kannte der Kompiler sowas wie CString nicht mehr. Also vorkompilierte Header wieder eingeschaltet und nun krieg ich C2859, soll heisen .pch und .pdb Dateien passen nicht zusammen. Ich krieg es nicht wieder hin.
    .pch und .pdb gelöscht, nix hilft.

    Wie krieg ich das wieder hin?

    Gruß

    MQ



  • "Projekt neu erstellen" hilft auch nicht?



  • scheinbar bricht der compiler bei der ersten datei gleich ab. nimm mal

    #include "..\stdafx.h"
    

    wenn das in _einem_ unterodner liegt.



  • Moin,

    _matze schrieb:

    "Projekt neu erstellen" hilft auch nicht?

    Nö! Ich habe alles versucht, mehrfach "Neu erstellen", in den Optionen "Use precompiled Header" und "Create precompiled Header" und "No use of precompiled Header" gewurschtelt. Gleichzeitiges Löchen der .pch und .pdb bringen nix. Komisch in diesem Zusammenhang ist, dass der Zeitstempel dieser Dateien 1-2 Minuten in der Zukunft liegt. So sollten beide gestern z.B. um 16:00 Uhr erstellt worden sein, es war aber nach Beendigung des Erstellens erst 15:58 Uhr. ????

    Benutze ich keine vorkompilerten Header, meckert er bei CString mit "redefinition". CString wohl deshalb, weil das in der Codereihenfolge gleich am Anfang steht. In der Folge kommen noch mehrere Fehler ähnlicher Art.

    Stelle ich auf "create precompiled ..." und mache dann eine Neuerstellung, läuft alles durch, bis eben auf eine .cpp Datei, wo "stdafx.h" nicht gefunden wird. Siehe dazu mein nächtes Post!

    Stelle ich auf "Use ...", dann kommt dieser C2859, der sagt, dass Header und die Datenbank nicht zusammenpassen, dass sie neu erstellt werden sollen. Ich habe aber nirgends Hinweise finden können, wie ich das machen soll.

    Gruß

    MQ



  • Machine schrieb:

    scheinbar bricht der compiler bei der ersten datei gleich ab. nimm mal

    #include "..\stdafx.h"
    

    wenn das in _einem_ unterodner liegt.

    Auch das habe ich schon versucht. Wenn ich den Pfad in der include-Anweisung ändere, dann meckert der Compiler schon gleich am Anfang, weil er angeblich stdafx.h im Code nicht finden kann und fragt, ob ich die Angabe nicht vergessen hätte.

    Komisch ist auch, dass in den anderen Teildateien, die ebenfalls für mein Projekt erstellt bzw. kompiliert werden auch nur "stdafx.h" steht und kein Wechsel des Pfads gefordert ist. Diese anderen Dateien werden aber korrekt, zumindest ohne Fehlermeldung, bearbeitet.

    hmmm!

    Mich interessiert jetzt, wie ich das Projekt in einen jungfräulichen Zustand, was die vorkompilerten Header angeht, bringe. Welche Dateien sind zu entfernen, welche Schalter sind wie in welcher Reihenfolge zu betätigen?

    Gruß

    MQ



  • Rebuild und nicht Build versuchen.



  • Artchi schrieb:

    Rebuild und nicht Build versuchen.

    Selbstverfreilich!

    Hatte ich ja geschrieben : "Neu erstellen" bzw. Rebuild!

    MQ


  • Mod

    Hast Du evtl. meherere stdafx.h Dateien?

    Du kannst versuchen es bei #incude "stdafx.h" zu belassen aber zusätzlich als Include Pfad das Hauptverzeichnis Deines Projektes angeben.

    Aber BTW: Bei mir geht das ohne Porbleme. Ich hole zum teil aus ganz anderen Ästen meine Sourcen und am Anfang steht nur
    #include "stdafx.h"

    Der Trick ist ja an sich, dass diese Datei gar nicht mehr benötigt wird. Sie ist nur das Signal, dass die pch Datei geladen wird.



  • Martin Richter schrieb:

    Aber BTW: Bei mir geht das ohne Porbleme. Ich hole zum teil aus ganz anderen Ästen meine Sourcen und am Anfang steht nur
    #include "stdafx.h"

    Der Trick ist ja an sich, dass diese Datei gar nicht mehr benötigt wird. Sie ist nur das Signal, dass die pch Datei geladen wird.

    So sollte es sein und so funzt es ja auch mit allen Quelldateien, außer mit einer einzigen. Alle diese Quelldateien liegen in ein und demselben Unterordner und stdafx liegt wo ganz anders.

    Ich kann nichts finden, was diese eine Datei von den anderen unterscheidet.

    MQ


  • Mod

    MasterQ schrieb:

    Ich kann nichts finden, was diese eine Datei von den anderen unterscheidet.

    Projekteinstellungen erneut für diese Datei kontrollieren.


Anmelden zum Antworten