Problem mit stdafx.h



  • Hallo Leute, ich habe ein Problem beim compilieren meines Codes.
    Auf dem alten Laptop funktioniert alles noch bei VS17 und die
    #include stdafx.h, wird normal angezeigt.

    Auf dem anderen Laptop VS22 u. VS17, wird das includieren als Fehler angezeigt und beim versuch den Code zu compilieren, spuckt er folgende Fehlermeldung aus:
    fatal error C1083: Datei (Include) kann nicht geöffnet werden: "stdafx.h": No such file or directory

    Habe auf die SuFu genutzt, komme aber leider nicht weiter.
    Vielleicht kann mir da ja jemand weiterhelfen.



  • Naja, ich meine die Fehlermeldung ist doch ziemlich klar, oder?

    Tip: stdafx.h ist Teil deines Projekts. Die Datei wird zwar von VS erzeugt wenn du ein neues Projekt erstellst. Aber du musst sie natürlich mit kopieren wenn du das Projekt kopierst.

    Also Frage: wie hast du das Projekt kopiert? Oder hast du auf dem neuen Notebook ein neues Projekt erstellt?



  • @hustbaer

    Danke für die schnelle Antwort.
    Ich habe ein neues Projekt erstellt gehabt.



  • OK. Ein Projekt das mit VS2017 erstellt wurde solltest du einfach so in VS2022 aufmachen und "upgraden" können.



  • @hustbaer

    das habe ich nicht gemacht.
    Allgemein auch bei einem neu angelegten Projekt, kommt die Fehlermeldung bei mir.



  • @Lumberjack sagte in Problem mit stdafx.h:

    das habe ich nicht gemacht.

    Na dann probier' es mal so.

    Allgemein auch bei einem neu angelegten Projekt, kommt die Fehlermeldung bei mir.

    Du bekommst die Fehlermeldung bei einem neu angelegten Projekt bei dem du nichts weiter geändert hast? Also einfach nur neues Projekt erstellen, "build" drücken und du bekommst die Fehlermeldung? Das wäre schon seltsam.



  • @hustbaer genutzt wird getch().
    Da meint der Compiler, ob ich nicht stdafx.h eventuell vergessen habe zu includieren.
    Aber includieren lässt sich die bib nicht. Da kommt dann die o.g. Fehlermeldung.



  • Also mit anderen Worten: ein neu erstelltes Projekt funktioniert eh, so lange du darin nichts änderst.
    Und wenn du eine Include-Anweisung für ein File hinschreibst, welches nicht existiert, dann bekommst du einen Fehler. Tja, so ist das nunmal.

    Dass dir die IDE einen irreführenden Tip gibt du solltest stdafx.h inkludieren, ist natürlich doof. Aber für den Code den du schreibst bist immer noch du verantwortlich, und wenn du halt #include <stdafx.h> hinschreibst ohne dass es stdafx.h in dem Projekt gibt, dann geht es halt nicht.

    Und wenn du getch verwenden willst, dann inkludiere die entsprechende Header für getch. Wenn du nicht weisst welche das ist, dann ergoogele es dir. Vorschlag für Suchbegriffe: getch visual studio oder getch msvc. Und dann nach Treffern auf docs.microsoft.com Ausschau halten. In der Referenz-Doku steht bei jeder Funktion dabei welche Header man inkludieren muss damit man die Funktion verwenden kann.



  • stdafx ist der precompiled header in visual studio projekten. Du kannst Projekte auch ohne erzeugen in dem du den Haken rausnimmst.
    Mehr infos dazu findest du unter dem fetten stichwort.



  • @hustbaer sagte in Problem mit stdafx.h:

    Also mit anderen Worten: ein neu erstelltes Projekt funktioniert eh, so lange du darin nichts änderst.
    Und wenn du eine Include-Anweisung für ein File hinschreibst, welches nicht existiert, dann bekommst du einen Fehler. Tja, so ist das nunmal.

    Dass dir die IDE einen irreführenden Tip gibt du solltest stdafx.h inkludieren, ist natürlich doof. Aber für den Code den du schreibst bist immer noch du verantwortlich, und wenn du halt #include <stdafx.h> hinschreibst ohne dass es stdafx.h in dem Projekt gibt, dann geht es halt nicht.

    Und wenn du getch verwenden willst, dann inkludiere die entsprechende Header für getch. Wenn du nicht weisst welche das ist, dann ergoogele es dir. Vorschlag für Suchbegriffe: getch visual studio oder getch msvc. Und dann nach Treffern auf docs.microsoft.com Ausschau halten. In der Referenz-Doku steht bei jeder Funktion dabei welche Header man inkludieren muss damit man die Funktion verwenden kann.

    Wie kann ich denn Header inkludieren?
    Habe einiges probiert, aber komme da leider nicht weiter.



  • @Lumberjack sagte in Problem mit stdafx.h:

    Wie kann ich denn Header inkludieren?
    Habe einiges probiert, aber komme da leider nicht weiter.

    Mit

    #include <headername>
    // bzw.
    #include "headername"
    

    ?
    Und headername kann natürlich auch eine Extension haben wie z.B. headername.h und/oder Namen von Unterverzeichnissen relativ zum Header-Verzeichnis enthalten wie z.B. dir/headername.h.


Log in to reply