2012-01-19 20 views
19

Sto usando intestazioni precompilate nel mio progetto in C ma stiamo integrando un file .CPP nel progetto.Intestazioni precompilate con misto C e C++

Ecco l'errore:

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 

Abbiamo solo bisogno di un singolo cpp compilato nel nostro progetto, ma abbiamo davvero bisogno l'intestazione pre-compilato per salvare i tempi di compilazione (Windows.h e più).

Come dovrei organizzare il mio progetto per fare questo?

+0

Puoi compilare la tua C come C++? –

+1

È improbabile che questo sia l'ultimo problema che si incontra nel tentativo di combinare in questo modo. Il solito problema è cercare di inserire alcuni .C in un progetto C++, non il contrario. –

+0

stdafx.h per i principianti - http://www.viva64.com/en/b/0265/ –

risposta

19

Quindi non utilizzare intestazioni precompilate per quel singolo file!

Essendo un file .cpp, avrà comunque opzioni di compilazione separate.

+0

per favore spiega cosa hai risposto @ Persson –

+0

@nafeeur Questo è stato molto tempo fa, ma credo che l'idea fosse che C e C++ avrebbero probabilmente richiesto diverse opzioni del compilatore, quindi l'intestazione precompilata non sarebbe comunque utilizzabile per entrambi gli insiemi (aveva il compilatore accettato). Quindi, basta compilare il singolo file CPP separatamente e non usare un'intestazione precompilata per questo. –

5

Potrebbe essere possibile creare due intestazioni precompilate nel progetto. Esiste una proprietà su ciascun file sorgente che determina se utilizzerà un'intestazione precompilata o genera un'intestazione precompilata: prova a impostare due origini diverse per generare un'intestazione.

+0

Grande opzione! Tuttavia richiede un po 'di giocherellare con il .vcproj. –

+10

Informazioni aggiuntive: selezionare il file .c da non utilizzare "Intestazione precompilata" da Esplora soluzioni -> Fare clic con il pulsante destro del mouse -> Sotto l'opzione Intestazioni precompilate, selezionare Non utilizzare l'intestazione precompilata – Zuuum

+0

Grazie Zuuum questo funziona per me quando si mescolano c C++ in VS. – Gob00st

1

Provare a creare un file di intestazione precompilato C++ separato (ad esempio MuffinFactoryCpp.h che è una copia dell'altro). Guarda le impostazioni del progetto sotto "Precompiled Headers" e usa questo nuovo file di intestazione come intestazione precompilata per il file sorgente C++.

0

Ho appena cercato l'errore qui e ho trovato questo thread. Tuttavia, a seguito di tentativi ed errori, ho scoperto che il problema era che non avevo tutti i file salvati di recente. Sembra che Visual Studio sia un po 'pignolo riguardo alle date di salvataggio dei file che sono collegati insieme.

Sono andato in giro colpendo Ctrl + S su tutti i file di origine e questo ha risolto il problema.

Problemi correlati