У меня есть проект Visual C ++ 2003, который зависит от сторонней статической библиотеки. Мой Visual C ++ проект также компилируется в статическую библиотеку. Я ссылался на стороннюю библиотеку из моего проекта, отредактировав свойства проекта, добавив каталог сторонней библиотеки в каталоги дополнительных библиотек (например, ./LibDir) и имя библиотеки в дополнительные зависимости (например, 3rdParty.lib).
На моей машине это работает, как я ожидал, добавив это в командную строку компоновщика:
/LIBPATH:"LibDir" 3rdParty.lib
На компьютере моего коллеги он добавляет это в командную строку компоновщика:
/LIBPATH:"LibDir" 3rdParty.lib "LibDir\3rdParty.lib"
Это приводит к двойному связыванию сторонней библиотеки, что приводит к множеству ошибок и предупреждений.
Эта проблема не характерна для этой библиотеки - кажется, что любая сторонняя библиотека, которую мы пытаемся таким образом включить на компьютере моего коллеги, в конечном итоге будет добавлена в командную строку дважды.
В чем причина различий в поведении его машины и моей?
UPDATE:
Сейчас я проверил это на третьей машине, которая продемонстрировала то же поведение, что и машина моего коллеги, то есть ссылка на дополнительную зависимость приводит к тому, что она добавляется дважды в командную строку компоновщика (эта разница возникает, когда я открываю те же самые файлы проекта в каждая машина).
Единственное различие, которое я могу себе представить, между моей машиной и двумя другими, состоит в том, что я установил VC ++ 2003 на свою машину пару лет назад и на двух других машинах на этой неделе.
Кроме того, похоже, что это происходит только в том случае, если мой проект скомпилирован в библиотеку - если он скомпилирован в исполняемый файл, сторонняя библиотека добавляется в командную строку компоновщика только один раз.
Есть идеи ...?