Для блага других, хотя я бы включил то, что сделал.
Поскольку вы не можете заставить Visual Studio (в моем случае 2010) игнорировать предупреждения LNK4204, мой подход состоял в том, чтобы дать ему то, что он хотел: файлы pdb. Поскольку в моем случае я использовал библиотеки с открытым исходным кодом, у меня уже есть код для сборки файлов pdb.
НО, по умолчанию все файлы PDF называются одинаково: vc100.pdb в моем случае.
Поскольку вам нужен .pdb для каждого .lib, это создает проблему, особенно если вы используете что-то вроде ImageMagik, который создает около 20 статических файлов .lib. Вы не можете иметь 20 файлов lib в одном каталоге (из которого ссылки компоновщика вашего приложения ссылаются в библиотеках), и все 20 файлов .pdb называются одинаковыми.
Мое решение состояло в том, чтобы пойти и перестроить мои файлы статической библиотеки и настроить VS2010 для присвоения имени файлу .pdb относительно ПРОЕКТА. Таким образом, каждый .lib получает аналогично названный .pdb, и вы можете поместить все LIB и PDB в один каталог для использования вашим проектом.
Итак, для конфигурации «Отладка» я отредактировал:
Свойства-> Свойства конфигурации -> C / C ++ -> Выходные файлы -> Имя файла базы данных программы из
$ (IntDir) $ VC (PlatformToolsetVersion) .pdb
будет следующим значением:
$ (OutDir) $ VC (PlatformToolsetVersion) D $ (ProjectName) .pdb
Теперь, а не где-то в промежуточном каталоге, файлы .pdb записываются в выходной каталог, куда также записываются файлы .lib, и, что важнее всего, им присваивается суффикс D + имя проекта. . Это означает, что каждая библиотека project создает проект .lib и проект .pdb.
Теперь я могу скопировать все мои файлы выпуска .lib, мои файлы отладки .lib и файлы .pdb отладки в одно место в моей системе разработки и проект, который использует эту стороннюю библиотеку в режиме отладки, содержит файлы pdb, необходимые для работы в режиме отладки.