2010-07-30 14 views
5

En una solución, tengo dos proyectos de VC++. Un proyecto tiene entradas de enlazadores que son archivos .obj compilados por el proyecto B.Proyecto de VC++ 2008 siempre "desactualizado"

Visual Studio (2008) siempre me dice que el proyecto es un "fuera de fecha", y me lleva a preguntar si quiero reconstruirla , cada vez que quiero ejecutar/depurar/construir/etc. Incluso inmediatamente después de compilar toda la Solución: realizo una construcción completa exitosa, y luego hago clic en Crear de nuevo y quiero volver a vincular el Proyecto A.

¿Cómo puedo evitar que esto suceda? ¿Alguien entiende lo que está pasando aquí?

Respuesta

2

Creo que la solución es dejar de usar archivos .obj del otro proyecto. En cambio, factorice el código que es común para los proyectos A y B en su propia biblioteca estática C y vincule tanto A como B a ella.

+0

Estaría dispuesto a aceptar eso, si solo pudiera entender ** por qué ** usar el .obj no funciona como se esperaba. – feuGene

+0

@ user406289: ¿Su solución tiene un conjunto de dependencias entre A y B? Tal vez estás construyendo los proyectos en mal estado? – wilx

+0

Sí, hay una dependencia definida en la Solución, y también he confirmado en el Orden de compilación que se supone que B debe compilar antes de A. – feuGene

2

Acabo de tener este problema con Visual Studio 2010 (ambos con y sin SP1) y gracias a Ted Nugent pude solucionarlo. El truco es verificar si todavía existen todos los archivos de encabezado C++ listados en el proyecto, y eliminar los que no existen. Aparentemente esto es un error en el compilador.

+0

Si leo su enlace correctamente, ese problema es específico de VS2010. Parece que está relacionado con el hecho de que los proyectos C++ están construidos con msbuild en VS2010, que no fue el caso en VS2008. – feuGene

+1

¡Eres un salvavidas! Me encontré con esta publicación tratando de resolver el problema VS2010. Funcionó a la perfección! – ShadowChaser

1

Ocurrió algo similar. Estaba trabajando con un código que usaba la hora del sistema y durante la depuración lo estaba jugando bastante. De alguna manera, los archivos tienen algunas malas marcas de tiempo. En la compilación, muestra qué archivos se vuelven a compilar, por lo que acabo de abrir cada uno, forzar un cambio (agregar espacio, eliminar un espacio) y luego volver a guardar.

Similar al viejo Unix "touch".

En un proyecto tuve que hacer lo mismo con sus archivos de inclusión. Pero después de 'tocar' los archivos de esa manera, el problema desapareció.

Cuestiones relacionadas