2012-01-19 22 views
19

Estoy utilizando encabezados precompilados en mi proyecto en C, pero estamos integrando un archivo .CPP en el proyecto.Encabezados precompilados con C y C mixtos

Aquí está el error:

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 

Tan sólo hay una única .CPP compilado en nuestro proyecto, pero que realmente necesita el encabezado precompilado para ahorrar tiempos de compilación (Windows.h y más).

¿Cómo debo organizar mi proyecto para hacer esto?

+0

¿Puedes compilar tu C como C++? –

+1

Es poco probable que sea el último problema que encuentre tratando de combinar de esta manera. El problema habitual es tratar de insertar unos pocos .C en un proyecto de C++, y no al revés. –

+0

stdafx.h para novatos - http://www.viva64.com/es/b/0265/ –

Respuesta

19

¡Así que no use encabezados precompilados para ese único archivo!

Siendo un archivo .cpp, tendrá opciones de compilación separadas de todos modos.

+0

explique lo que respondió @ Persson –

+0

@nafeeur Esto fue hace mucho tiempo, pero creo que la idea era que C y C++ probablemente requerirían diferentes opciones de compilación, por lo que el encabezado precompilado no se podría usar para ambos conjuntos de todos modos (tenía el compilador lo aceptó). Así que solo compile el archivo CPP individual por separado, y no use un encabezado precompilado para él. –

5

Es posible que pueda crear dos encabezados precompilados en su proyecto. Hay una propiedad en cada archivo fuente que determina si va a usar un encabezado precompilado, o generar un encabezado precompilado; intente configurar dos orígenes para generar un encabezado.

+0

¡Gran opción! Sin embargo, requiere un poco de manipulación con el .vcproj. –

+10

Información adicional: Seleccione el archivo .c que no desea usar "Encabezado precompilado" del Explorador de soluciones -> Clic derecho -> En la opción Encabezados precompilados, seleccione No usar encabezado precompilado – Zuuum

+0

Gracias Zuuum esto funciona para mí al mezclar c & C++ en VS. – Gob00st

1

Intente crear un archivo de encabezado precompilado separado de C++ (digamos MuffinFactoryCpp.h que es una copia del otro). Mire la configuración del proyecto en "Encabezados precompilados" y utilice este nuevo archivo de encabezado como el encabezado precompilado para el archivo fuente de C++.

0

Acabo de buscar el error aquí y encontré este hilo. Sin embargo, después de la prueba y error, descubrí que el problema era que no tenía todos los archivos guardados recientemente. Parece que Visual Studio es un poco quisquilloso acerca de guardar las fechas de los archivos que están unidos.

Fui por ahí presionando Ctrl + S en todos los archivos fuente y eso solucionó el problema.

Cuestiones relacionadas