web-dev-qa-db-fra.com

En-têtes précompilés avec C et C++ mélangés

J'utilise des en-têtes pré-compilés dans mon projet en C mais nous intégrons un fichier .CPP dans le projet.

Voici l'erreur:

Error   1   fatal error C1853: 'Debug\MuffinFactory.pch' precompiled header
file is from a previous version of the compiler, or the precompiled header is C++
 and you are using it from C (or vice versa)    
c:\users\blake\desktop\projects\muffinfactory\source\main.cpp   1

Nous n'avons besoin que d'un seul fichier .CPP compilé dans notre projet, mais nous avons vraiment besoin de l'en-tête précompilé pour économiser les temps de compilation (Windows.h et autres).

Comment dois-je organiser mon projet pour ce faire?

20
James Linden

Donc, n'utilisez pas d'en-têtes précompilés pour ce fichier unique!

Étant un fichier .cpp, il aura de toute façon des options de compilation séparées.

19
Bo Persson

Vous pourrez peut-être créer deux en-têtes précompilés dans votre projet. Une propriété sur chaque fichier source détermine si elle va utiliser un en-tête précompilé ou générer un en-tête précompilé - essayez de définir deux sources différentes pour générer un en-tête.

5
Mark Ransom

Essayez de créer un fichier d’en-tête précompilé C++ distinct (par exemple, MuffinFactoryCpp.h, qui est une copie de l’autre). Examinez les paramètres du projet sous "En-têtes précompilés" et utilisez ce nouveau fichier d'en-tête comme en-tête précompilé pour le fichier source C++.

1
zdan

Je viens de regarder l'erreur ici et a trouvé ce fil. Cependant, après essais et erreurs, j’ai trouvé que le problème était que tous les fichiers n’avaient pas été enregistrés récemment. Il semble que Visual Studio hésite un peu sur les dates de sauvegarde des fichiers joints. 

Je suis allé frapper Ctrl + S sur tous les fichiers source et cela a résolu le problème. 

0
Brandon Nolet