10
votes

En-têtes précompilés avec des solutions DLL. Impossible d'ouvrir un fichier d'en-tête précompilé

Ceci a fonctionné sans erreur lorsque cette solution a fonctionné de fichiers .lib au lieu de fichiers .dll.

J'ai tous mes projets sauf l'un en utilisant actuellement un en-tête précompilé, sans erreur . L'en-tête précompilé est appelé " ludoglobal.h ". J'essaie de relier le dernier projet à cet en-tête précompilé (qui existe dans un projet "noyau" séparé) mais je reçois l'erreur suivante:

Erreur 4 Erreur fatale C1083: impossible d'ouvrir Fichier d'en-tête précompilé: «.... \ Sortie \ Ludosound \ Debug \ Ludosound.pch ': Pas de tel fichier ou Annuaire Ludosoundmanager.cpp 1

pour chaque fichier .cpp. Pourquoi est-ce? Comment puis-je le résoudre?

Je réalise Ludosound.Pch n'existe pas. Je suis sous l'hypothèse que cela est probablement créé lorsque Ludosound compile, Yesno?


3 commentaires

Vérifiez si le fichier (.... \ Sortie \ Ludosound \ Debug \ Ludosound.pch ') existe.


Ce n'est pas le cas. Il faudrait être construit, je suppose. Cela semble l'arrêter.


Dupliqué possible de Comment réparer le fichier .pch manquant sur la construction?


4 Réponses :


25
votes

Utilisez-vous "Générez automatiquement" ou "Utilisez l'en-tête précompilé" sur le projet et "Créer une en-tête précompilé" dans le fichier CPP? Ce dernier est plus efficace, mais j'ai vu la configuration par fichier sur les projets obtenue accidentellement, de sorte que le fichier "stdafx.cpp" (ou autre) ne génère plus l'en-tête précompilé.


7 commentaires

J'utilise UTILISE UTILISER PRECOMPILLEDHEADER (/ YU). Avec Créer / utiliser PCH via le fichier Ludocore \ Ludoglobal.h. Ludoglobal est mon en-tête précompilé


Vous devez avoir un fichier CPP (Ludoglobal.cpp) qui inclut le fichier .h et dispose des paramètres de configuration appropriés différentes de tous les autres fichiers .cpp.


J'ai le fichier .CPP, mais quels paramètres de configuration parlez-vous? Notez que c'est un travail de travail comme un en-tête précompilé pour plusieurs autres projets.


Vous devez accéder à "Propriétés" pour ce fichier .CPP (par opposition aux propriétés du projet) et définissez-le sur "Créer un en-tête précompilé".


Donc, le fichier ludoglobal.cpp est défini sur "Créer une en-tête précompilé", mais lorsque vous compilez le fichier CPP, aucun fichier PCH n'est généré et aucune erreur ne se produit? Peut-être que les répertoires intermédiaires / sorties (ou l'emplacement du fichier PCH) ne correspondent-ils pas pour que les autres fichiers le recherchent dans un endroit différent de celui qu'il est généré. Lorsque vous reconstruisez le projet, il construit-il toujours Ludoglobal.cpp premier? Pouvez-vous poster le fichier .vcproj?


J'ai le même problème étrange, avoir des dizaines de mêmes erreurs comme "{}" "" "" "caractère mal placé, mais tout a bien compilé plus tôt. Cela me donne envie de gifler un employé de Microsoft, sérieusement.


J'ai le même problème que Topic Starter, j'ai deux projets à l'intérieur d'une solution et je veux qu'un projet de générer une PCH et un autre projet de réutiliser. Si je compile seul le premier projet (maître) seul, il génère une PCH sans aucun problème. Mais lorsque j'essaie de compiler le deuxième projet (dépendances, répertoire de non-réautions supplémentaires, chemin d'accès à PCH sont tous définis) Il vient de supprimer le fichier .PCH à partir du projet principal et des sorties avec une erreur "Impossible d'ouvrir un fichier d'en-tête précompilé"



0
votes

Essayez de reconstruire votre projet dans une nouvelle, copier uniquement les fichiers nécessaires.


2 commentaires

Ce projet est incroyablement étroitement couplé. Malheureusement, j'ai besoin de tout.


Restaurer la sauvegarde du projet et essayer cette version.



0
votes

Ludosound.PCH n'a pas été régénéré. Supprimez uniquement le dossier qu'il était dans et construire à nouveau.


0 commentaires

4
votes

J'ai eu cette question après avoir supprimé et ré-ajouter STDAFX.CPP de & à mon projet. Solution:

  • STDAFX.CPP doit avoir la propriété Create Create CreePompiledheader (/ YC), cet établi STDAFX.CPP comme celui qui est responsable de la création du fichier .pch à partir de stdafx.h
  • Le projet (et avec que tous les fichiers de celui-ci) peuvent avoir l'utilisation de la propriété précompiledheader (/ yu), ils peuvent utiliser .PCH créé par la compilation de stdafx.cpp

0 commentaires