В интересах других, я бы включил то, что я сделал.
Поскольку вы не можете получить Visual Studio (2010 в моем случае), чтобы игнорировать предупреждения LNK4204, мой подход состоял в том, чтобы предоставить ему то, что он хотел: файлы pdb. Поскольку я использовал библиотеки с открытым исходным кодом в моем случае, у меня уже есть код, создающий файлы pdb.
НО, значение по умолчанию означает, что все файлы PDF будут одинаковыми: vc100.pdb в моем случае. Как вам нужно .pdb для каждого .lib, это создает проблему, особенно если вы используете что-то вроде ImageMagik, которое создает около 20 статических .lib-файлов. У вас не может быть 20 файлов lib в одном каталоге (с которого ссылается компоновщик вашего приложения на ссылку в библиотеках), и все 20 файлов .pdb называются одинаковыми.
Мое решение состояло в том, чтобы пойти и восстановить мои файлы статической библиотеки и настроить VS2010 на имя файла .pdb относительно PROJECT. Таким образом, каждый .lib получает аналогично имя .pdb, и вы можете поместить все LIB и PDB в один каталог для вашего проекта.
Так что для "Отладка" configuraton, я редактировал:
свойства-> Конфигурация Свойства -> C/C++ -> Output Files - Имя> Программа Файл базы данных из
$ (IntDir) $ VC (PlatformToolsetVersion) .pdb
быть следующее значение:
$ (OutDir) $ VC (PlatformToolsetVersion) D $ (Имя_проекта).PDB
Теперь вместо того, где-то в промежуточном каталоге, то PDB-файлы записываются в выходной каталог, где .lib файлы также написано, и что самое главное, они названы с суффиксом D + проекта имя. Это означает, что каждая библиотека проекта содержит проект .lib и специфичный для проекта .pdb.
Теперь я могу скопировать все мои .lib-файлы выпуска, файлы debug .lib и файлы debug .pdb в одно место в моей системе разработки и проект, который использует эту стороннюю библиотеку в режиме отладки , имеет файлы pdb, которые ему нужны в режиме отладки.
Для VS2005/игнорирование: 4099 отлично работает. – 2010-08-18 13:07:50
/ignore: 4099 отлично работает здесь с VS2008. – Tom
'/ ignore: 4099' отлично работает в Visual Studio 10 с C++. Я получил предупреждение 'LNK4099: PDB 'vc100.pdb' не был найден с 'gtest_main-mdd.lib (gtest_main.obj)' и удалил его таким образом. – Manolete