web-dev-qa-db-fra.com

Comment réparer le fichier .pch manquant lors de la construction?

Lorsque je crée ma solution c ++ dans Visual Studio, il se plaint de l'absence du fichier xxxxx.pch. Y at-il un paramètre qui me manque pour récupérer les en-têtes pré-compilés?

voici l'erreur exacte pour l'exhaustivité:

Error   1   fatal error C1083: Cannot open precompiled header file: 'Debug\xxxxx.pch': No such file or directory
147
Sam Mackrill

REMARQUE: les versions ultérieures de IDE peuvent utiliser "pch" plutôt que "stdafx" dans les noms par défaut des fichiers associés. Il peut être nécessaire de remplacer pd par stdafx dans les instructions ci-dessous. Je m'excuse. Ce n'est pas de ma faute.

  1. Cliquez avec le bouton droit sur votre projet dans l'explorateur de solutions.
  2. Cliquez sur Propriétés en bas du menu déroulant.
  3. En haut à gauche des pages de propriétés, sélectionnez Toutes les configurations dans le menu déroulant.
  4. Ouvrez l'arborescence C/C++ et sélectionnez En-têtes précompilés.
  5. En-tête précompilé: sélectionnez Utiliser (/ Yu)
  6. Renseignez le champ Fichier d'en-tête précompilé. Standard est stdafx.h
  7. Cliquez OK

  8. Si vous n'avez pas stdafx.h dans vos fichiers d'en-tête, mettez-le là. Modifiez-le pour inclure tous les en-têtes que vous voulez précompiler.

  9. Placez un fichier nommé stdafx.cpp dans votre projet. Mettez #include "stdafx.h" en haut, et rien d'autre.
  10. Cliquez avec le bouton droit sur stdafx.cpp dans l'Explorateur de solutions. Sélectionnez Propriétés et Toutes les configurations à nouveau comme à l'étape 4 ...
  11. ... mais cette fois, sélectionnez En-tête précompilé Créer (/Yc). Cela ne liera que le fichier stdafx.cpp.
  12. Placez #include "stdafx.h" tout en haut de tous vos fichiers source.

Lucky 13. Croisez vos doigts et appuyez sur Construire.

389
Jive Dadson

L'utilisation d'en-tête précompilé (pch) est un processus en deux étapes.

À la première étape, vous compilez un fichier de raccord (dans VS200x, il est généralement appelé stdafx.cpp). Ce fichier de raccord n'inclut indirectement que les en-têtes que vous souhaitez précompiler. En règle générale, un petit en-tête (généralement stdafx.h) répertorie les en-têtes standard tels que <iostream> et <string>, qui sont ensuite inclus dans le fichier de raccord. La compilation crée le fichier .pch.

À l'étape 2, votre code source actuel inclut le même petit en-tête de l'étape 1 que le premier en-tête. Le compilateur, lorsqu'il rencontre cet en-tête spécial, lit à la place le fichier .pch correspondant. Cela signifie qu'il n'est pas nécessaire de (re) compiler ces en-têtes standard à chaque fois.

Dans votre cas, il semble que l'étape 1 échoue. Le fichier de raccord est-il toujours présent? Dans votre cas, ce serait probablement xxxxx.cpp. Il doit s'agir d'un fichier compilé avec /Yc:xxxxx.pch, car il s'agit de l'indicateur de compilation qui indique l'étape 1 du processus PCH. Si xxxxx.cpp est présent et constitue un fichier de raccord, il manque probablement son option de compilateur /Yc:.

57
MSalters

Réparer:

  1. Assurez-vous d'avoir xxxxx.cpp dans votre projet

  2. Compiler xxxxx.cpp avec l'indicateur/Yc (Create en-tête précompilé)
    (clic droit sur xxxxx.cpp -> propriétés -> en-têtes précompilés -> créer)

  3. Compiler tous les autres fichiers avec l'indicateur/Yu (tiliser En-tête précompilé)
    (clic droit sur projet -> propriétés -> en-têtes précompilés -> tiliser)

20
franckspike
  1. Faites un clic droit sur le projet et sélectionnez l'élément de menu de propriété
  2. goto C/C++ -> En-têtes précompilés
  3. Sélectionnez Ne pas utiliser les en-têtes précompilés
6
jpabess

Oui, il peut être éliminé avec les options/Yc comme d'autres l'ont fait remarquer, mais il est fort probable que vous n'auriez pas besoin de le toucher pour le réparer. Pourquoi obtenez-vous cette erreur en premier lieu sans modifier aucun paramètre? Vous avez peut-être "nettoyé" le projet et ensuite essayé de compiler un seul fichier cpp. Vous obtiendrez cette erreur dans ce cas car l'en-tête du précompileur est maintenant manquant. Il suffit de construire l’ensemble du projet (même s’il échoue) et de ne créer aucun fichier cpp unique et vous n’obtiendrez pas cette erreur.

2
zar

Si cela vous arrive sur une version de serveur (AppCenter) et que vous utilisez CocoaPods, assurez-vous que votre fichier Podfile est archivé.

AppCenter n'exécute la commande "pod install" que s'il trouve un fichier Pofile et ne trouve pas le dossier PODS dans les fichiers.

Le dossier a été archivé, mais parce que git ignore automatiquement les fichiers .pch (vérifiez que vous êtes .gitignore pour vérifier cela), mon .pch n’a pas été archivé.

J'ai trié mon problème en forçant les fichiers .pch à le vérifier, mais la suppression du dossier PODS devrait également fonctionner, car Appcenter exécutera la commande pod install dans ce cas.

Heureusement, cela aide quelqu'un.

2
Marco Leite

Si tout est correct, mais que cette erreur est présente, il faut vérifier la section suivante du fichier ****. Vcxproj:

<ClCompile Include="stdafx.cpp">
  <PrecompiledHeader Condition=

Dans mon cas, il y avait un nom incorrect de configuration: seulement le premier mot.

0
Sergey ArcTechno

Je sais que ce sujet est très ancien, mais je m'occupais de cela récemment dans VS2015 et ce qui m'a aidé était de supprimer les dossiers de construction et de le reconstruire. Cela est peut-être dû à une tentative de fermeture du programme ou à un programme d’arrêt/gel du programme pendant la construction.

0
glover12

Je cherchais le fichier PCH iOS qui pose le même problème. Si vous êtes ici comme moi aussi, la solution que j'ai trouvée consiste à effacer les données dérivées. Fermez le (s) simulateur (s), accédez aux préférences xCode -> emplacements -> accédez au chemin du fichier de données dérivé, fermez xCode, supprimez les fichiers du dossier de données dérivé, relancez-le et applaudissez :)

0
Ahmed Awad