2010-07-30 2 views
5

В одном решении у меня есть два проекта VC++. Проект А имеет компоновщик входы, которые .obj файлы, скомпилированные с помощью проекта B.Проект VC++ 2008 всегда «устарел»

Visual Studio (2008) всегда мне подсказывает, что проект А «дата», и побуждает меня спросить, если я хочу, чтобы восстановить его , каждый раз, когда я хочу запускать/debug/build/etc. Даже сразу после создания всего решения: я делаю успешную полную сборку, а затем снова нажимаю «Создать», и он хочет повторно связать проект A.

Как я могу предотвратить это? Кто-нибудь понимает, что здесь происходит?

ответ

2

Я думаю, что решение состоит в том, чтобы прекратить использование .obj-файлов из другого проекта. Вместо этого закрепите код, который является общим для обоих проектов A и B, в собственную статическую библиотеку C и свяжите оба A и B с ним.

+0

Я был бы готов принять это, если бы я мог понять ** почему ** использование .obj не работает должным образом. – feuGene

+0

@ user406289: У вашего решения есть зависимость, установленная между A и B? Может быть, вы строите проекты в плохом состоянии? – wilx

+0

Да, в решении есть зависимость, и я также подтвердил в Порядке сборки, что B должен построить до A. – feuGene

2

У меня была эта проблема с Visual Studio 2010 (как с SP1 и без него), так и благодаря Ted Nugent Мне удалось исправить это. Трюк состоит в том, чтобы проверить, все ли все файлы заголовков C++, перечисленные в проекте, все еще существуют, и удалить несуществующие. По-видимому, это ошибка в компиляторе.

+0

Если я правильно прочитал вашу ссылку, эта проблема специфична для VS2010. Похоже, это связано с тем, что проекты C++ построены с помощью msbuild в VS2010, чего не было в VS2008. – feuGene

+1

Ты спасатель! Я столкнулся с этим сообщением, пытаясь решить проблему VS2010. Отлично! – ShadowChaser

1

Было что-то подобное. Я работал с кодом, который использовал системное время, и во время отладки я довольно много крутился с ним. Так или иначе файлы получили некоторые плохие метки времени. В сборке он показывает, какие файлы перекомпилируются, поэтому я просто открыл их, принудительно изменил (добавьте пробел, удалит пробел), а затем снова сохранил.

Похоже на старый unix "touch".

В одном проекте я должен был сделать то же самое со своими файлами include. Но после «касания» таких файлов проблема исчезла.

Смежные вопросы