Wenn ich meine C ++ - Lösung in Visual Studio erstelle, wird beanstandet, dass die Datei xxxxx.pch fehlt. Gibt es eine Einstellung, die mir fehlt, um die vorkompilierten Header zurückzubekommen?
Hier ist der genaue Fehler für die Vollständigkeit:
Error 1 fatal error C1083: Cannot open precompiled header file: 'Debug\xxxxx.pch': No such file or directory
c++
visual-studio
precompiled-headers
pch
Sam Mackrill
quelle
quelle
Antworten:
HINWEIS: In späteren Versionen der IDE wird möglicherweise "pch" anstelle von "stdafx" in den Standardnamen für verwandte Dateien verwendet. In den folgenden Anweisungen muss stdafx möglicherweise durch pch ersetzt werden. Ich entschuldige mich. Es ist nicht meine Schuld.
Klicken Sie auf Okay
Wenn Sie stdafx.h nicht in Ihren Header-Dateien haben, legen Sie es dort ab. Bearbeiten Sie es, um alle Header einzuschließen, die vorkompiliert werden sollen.
Lucky 13. Drücken Sie die Daumen und drücken Sie Build.
quelle
stdafx.pch
Datei aus, während diexxxxx.pch
Frage auf ein komplexeres Problem hinweist (Multi-PCH-Setup).Die Verwendung von vorkompilierten Headern (pch) erfolgt in zwei Schritten.
In Schritt eins kompilieren Sie eine Stub-Datei (in VS200x wird sie normalerweise aufgerufen
stdafx.cpp
. Neuere Versionen verwendenpch.cpp
.). Diese Stub-Datei enthält indirekt nur die Header, die Sie vorkompilieren möchten. In der Regel listet ein kleiner Header (normalerweisestdafx.h
oderpch.hpp
) Standardheader wie<iostream>
und auf<string>
, die dann in der Stub-Datei enthalten sind. Durch das Kompilieren wird die .pch-Datei erstellt.In Schritt 2 enthält Ihr tatsächlicher Quellcode denselben kleinen Header aus Schritt 1 wie der erste Header. Wenn der Compiler auf diesen speziellen Header stößt, liest er stattdessen die entsprechende .pch-Datei. Das bedeutet, dass diese Standardheader nicht jedes Mal (neu) kompiliert werden müssen.
In Ihrem Fall scheint Schritt 1 fehlgeschlagen zu sein. Ist die Stub-Datei noch vorhanden? In Ihrem Fall wäre das wahrscheinlich
xxxxx.cpp
. Es muss sich um eine Datei handeln, mit der kompiliert wurde/Yc:xxxxx.pch
, da dies das Compiler-Flag ist, das angibt, dass es sich um Schritt 1 des PCH-Prozesses handelt. Wennxxxxx.cpp
vorhanden und eine solche Stub-Datei ist, fehlt wahrscheinlich die/Yc:
Compiler-Option.quelle
Fix:
Stellen Sie sicher, dass Sie xxxxx.cpp in Ihrem Projekt haben
Kompilieren Sie xxxxx.cpp mit dem Flag / Yc ( Create Precompiled Header)
(Rechtsklick auf xxxxx.cpp -> Eigenschaften -> Precompiled Headers -> create )
Kompilieren Sie alle anderen Dateien mit / Yu - Flag ( Verwenden vorkompilierte Header)
(Rechtsklick auf Projekt -> Eigenschaften -> vorkompilierte Header -> Verwendung )
quelle
quelle
Create (/Yc)
(um wiederherzustellen und dann wieder zu verwenden)Ja, es kann mit den / Yc-Optionen beseitigt werden, wie andere bereits betont haben, aber höchstwahrscheinlich müssten Sie es nicht berühren, um es zu beheben. Warum wird dieser Fehler überhaupt angezeigt, ohne dass Einstellungen geändert werden? Möglicherweise haben Sie das Projekt "bereinigt" und dann versucht, eine einzelne CPP-Datei zu kompilieren. In diesem Fall wird dieser Fehler angezeigt, da der Precompiler-Header jetzt fehlt. Erstellen Sie einfach das gesamte Projekt (auch wenn es nicht erfolgreich ist) und erstellen Sie dann eine einzelne CPP-Datei, und Sie erhalten diesen Fehler nicht.
quelle
Falls Ihnen dies auf einem Server-Build (AppCenter) passiert und Sie CocoaPods verwenden, stellen Sie sicher, dass Ihre Pod-Datei eingecheckt ist.
AppCenter führt den Befehl "pod install" nur aus, wenn ein Pofile gefunden wird und der PODS-Ordner in den Dateien NICHT gefunden wird.
Ich hatte den Ordner eingecheckt, aber da git .pch-Dateien automatisch ignoriert (überprüfen Sie .gitignore, um dies zu bestätigen), wurde meine .pch nicht eingecheckt.
Ich habe mein Problem behoben, indem ich die .pch-Dateien gezwungen habe, es zu überprüfen, aber das Löschen des PODS-Ordners sollte auch funktionieren, da Appcenter in diesem Fall den Befehl pod install ausführt.
Hoffentlich hilft das jemandem.
quelle
Wenn alles in Ordnung ist, aber dieser Fehler vorliegt, muss der nächste Abschnitt in der Datei ****. Vcxproj überprüft werden:
In meinem Fall gab es einen falschen Namen für eine Konfiguration: nur das erste Wort.
quelle
Ich weiß, dass dieses Thema sehr alt ist, aber ich habe mich kürzlich in VS2015 damit befasst. Es hat geholfen, die Build-Ordner zu löschen und neu zu erstellen. Dies kann durch den Versuch geschehen sein, das Programm zu schließen, oder durch ein Programm, das VS während der Erstellung anhält / einfriert.
quelle
Ich habe nach der iOS-PCH-Datei gesucht, die das gleiche Problem hat. Wenn Sie wie ich hierher gekommen sind, habe ich die Lösung gefunden, indem ich abgeleitete Daten gelöscht habe. Schließen Sie Simulator (en), gehen Sie zu xCode-Einstellungen -> Speicherorte -> gehen Sie zum Pfad der abgeleiteten Datendatei, schließen Sie xCode, löschen Sie die Dateien im Ordner für abgeleitete Daten, starten Sie neu und jubeln Sie :)
quelle
Versuchen Sie Build> Clean Solution und dann Build> Build Solution. Das funktioniert bei mir.
quelle