2010-07-30 8 views
5

In una soluzione, ho due progetti VC++. Progetto A dispone di ingressi linker che sono file obj compilati da progetto B.Progetto VC++ 2008 sempre "non aggiornato"

Visual Studio (2008) sempre mi dice che il progetto A è "fuori moda", e mi spinge a chiedere se voglio ricostruirlo , ogni volta che voglio eseguire/debug/build/etc. Anche subito dopo aver creato l'intera soluzione: eseguo una compilazione completa di successo, quindi fai di nuovo clic su Compila e desideri ricollegare il Progetto A.

Come posso evitare che ciò accada? Qualcuno capisce cosa sta succedendo qui?

risposta

2

Penso che la soluzione sia smettere di usare i file .obj dell'altro progetto. Piuttosto, calcola il codice che è comune a entrambi i progetti A e B nella propria libreria statica C e collega sia A che B ad esso.

+0

Sarei disposto ad accettarlo, se solo potessi capire ** perché ** l'uso di .obj non funziona come previsto. – feuGene

+0

@ user406289: la soluzione ha un set di dipendenze tra A e B? Forse stai costruendo i progetti in cattivo ordine? – wilx

+0

Sì, c'è una dipendenza definita nella Soluzione e ho anche confermato nell'ordine di compilazione che B dovrebbe costruire prima di A. – feuGene

2

Ho appena avuto questo problema con Visual Studio 2010 (sia con che senza SP1) e grazie a Ted Nugent sono riuscito a risolverlo. Il trucco consiste nel verificare se tutti i file di intestazione C++ elencati nel progetto esistono ancora e rimuovere quelli non esistenti. Apparentemente questo è un bug nel compilatore.

+0

Se leggo correttamente il tuo collegamento, quel problema è specifico di VS2010. Sembra che sia correlato al fatto che i progetti C++ sono costruiti con msbuild in VS2010, il che non era il caso di VS2008. – feuGene

+1

Sei un vero toccasana! Mi sono imbattuto in questo post cercando di risolvere il problema VS2010. Ha funzionato perfettamente! – ShadowChaser

1

Si è verificato qualcosa di simile. Stavo lavorando con il codice che utilizzava l'ora del sistema e durante il debug ne stavo giocando un bel po '. In qualche modo i file hanno dei brutti timestamp. Nella build, mostra quali file vengono ricompilati, quindi ho appena aperto ciascuno, forzato una modifica (aggiungere spazio, eliminare uno spazio) e quindi ri-salvato.

Simile al vecchio "tocco" unix.

In un progetto ho dovuto fare lo stesso con i suoi file di inclusione. Ma dopo aver "toccato" i file in quel modo, il problema è andato via.

Problemi correlati