Последовательная сборка проектов VS2005 и VS2008 C ++ вызывает ошибку LNK1104 - PullRequest
0 голосов
/ 21 апреля 2010

VS2005 и VS2008 установлены на одной машине. У меня также есть общая кодовая база, которую я создаю, используя '05 и '08. Для этого у меня есть 2 проекта VC. Проект '08 с именем XYZ_2008.vcproj и проект '05 с названием XYZ_2005.vcproj , а также соответствующие 2 slns. Оба проекта выводят dll, libs и pdbs в один и тот же выходной каталог (все с соответствующими суффиксами _2005 и _2008).

Предполагая, что я начинаю с чистого состояния, я сначала открываю XYZ_2005.sln (содержащий XYZ_2005.vcproj) в VS2005 и собираю его успешно. Затем я закрываю VS2005.

Затем я открываю XYZ_2008.sln (содержащий XYZ_2008.vcproj) и собираю (не перестраиваю) его. В этот момент я получаю сообщение об ошибке:

LINK : fatal error LNK1104: cannot open file 'mfc80u.lib'

Если теперь я перестроил решение '08, ошибка исчезнет и сборка завершится успешно. Сборка также завершится успешно, если я выполню непосредственную перестройку вместо сборки для '08 sln.

Несмотря на то, что все разделено, сборка VS08, похоже, получает файл MFC8 (из VS05) вместо файла MFC9.

Может кто-нибудь помочь с этой проблемой?

Заранее спасибо!

1 Ответ

1 голос
/ 02 июня 2010

Возможно, зависимость ссылки хранится в файле сборки .obj. VS2008 «не видит» необходимости его перестройки, поскольку ни его источник, ни его опции сборки не изменены При связывании используется старая зависимость, и связывание не выполняется.

Я считаю плохой идеей смешивать 2 VS Builds. Если вам нужны оба решения, вы всегда должны делать перестройку при переходе с одного решения на другое.

...