177 votes

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

Lorsque je crée ma solution c ++ dans Visual Studio 2008, il se plaint de l'absence du fichier xxxxx.pch. Y a-t-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
 

476voto

Jive Dadson Points 3563
  1. Clic-droit sur votre projet dans l'Explorateur de solutions.
  2. Cliquez sur Propriétés dans le bas du menu déroulant.
  3. En haut à gauche des Pages de Propriétés, sélectionnez Toutes les Configurations du menu déroulant.
  4. Ouvrez le C/C++ arborescence et sélectionnez les en-Têtes Précompilés
  5. D'En-Tête Précompilé: Sélectionnez Utiliser (/Yu)
  6. Remplissez le champ Fichier d'en-Tête Précompilé. La norme est stdafx.h
  7. Cliquez Sur Ok

  8. Si vous n'avez pas stdafx.h dans les Fichiers d'en-Tête de l'y ajouter. Modifier #inclure tous les en-têtes que vous voulez précompilés.

  9. Mettre un fichier nommé stdafx.cpp dans votre projet. Mettre #include "stdafx.h" au dessus de lui, et rien d'autre.
  10. Cliquez-droit sur stdafx.cpp dans l'Explorateur de solutions. Sélectionnez Propriétés et Toutes les configurations de nouveau comme dans l'étape 4 ...
  11. ... mais cette fois-ci sélectionnez un en-Tête Précompilé Créer (/Yc). Cela ne fera que se lier à un fichier stdafx.cpp.
  12. Mettre #include "stdafx.h" tout en haut de tous vos fichiers source. (Unix ou les utilisateurs de cygwin: find . -name "*.cpp" | xargs -n1 sed -i '1s/^/#include "stdafx.h"\n/')

Lucky 13. Croisez les doigts et frapper Construire.

60voto

MSalters Points 74024

En-Tête précompilé (pch) est l'utilisation d'un processus en deux étapes.

Dans la première étape, vous compilez un fichier stub (En VS200x il est généralement appelé stdafx.cpp). Ce fichier stub comprend uniquement les en-têtes que vous voulez précompilés. Généralement, c'est seulement un petit en-tête des listes des en-têtes standard tels que <iostream> et <string>. Cela crée la .pch fichier.

Dans l'étape 2, votre code source comprend les mêmes petits en-tête à partir de l'étape 1 comme le premier en-tête. Le compilateur, lorsqu'il rencontre cette en-tête spécial, dit le correspondant .pch fichier à la place. Cela signifie qu'il n'a pas à (re)compiler ces en-têtes standard à chaque fois.

Dans votre cas, il semble que l'étape 1 échoue. Est le fichier stub toujours présent? Dans votre cas, ce serait probablement xxxxx.cpp. Il doit être un fichier compilé avec /Yc:xxxxx.pch, puisque c'est le compilateur drapeau pour indiquer que c'est l'étape 1 de la PCH processus. Si xxxxx.cpp est présent, et c'est un fichier stub, alors il n'est probablement pas l' /Yc: option du compilateur.

24voto

franckspike Points 380

Réparer:

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

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

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

8voto

jpabess Points 31
  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

2voto

zadane Points 934

Oui, il peut être éliminé à l' /Yc options comme les autres l'ont souligné, mais le plus probable que vous n'avez pas besoin de le toucher pour le fixer. Pourquoi vous obtenez cette erreur, en premier lieu, sans modifier les paramètres? Vous pourriez avoir "nettoyé" le projet et que d'essayer de compiler un seul fichier cpp. Vous obtenez cette erreur, dans ce cas, parce que le précompilateur en-tête de est désormais absent. Juste construire l'ensemble du projet (même en cas d'échec) et de construire un seul fichier cpp et vous n'obtiendrez pas cette erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X