Для пользы других я решил включить то, что сделал.
Поскольку вы не можете заставить 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 + имя проекта em >. Это означает, что каждая библиотека project создает файл .lib проекта и отдельный файл .pdb проекта.
Теперь я могу скопировать все мои файлы .lib выпуска, мои файлы .lib отладки и файлы .pdb отладки в одно место в моей системе разработки, а проект, который использует эту стороннюю библиотеку в режиме отладки, имеет pdb файлы, необходимые в режиме отладки.
person
Minok
schedule
08.08.2014
/ignore:4099отлично работает в Visual Studio 10 с C ++. Я получил предупреждениеLNK4099: PDB 'vc100.pdb' was not found with 'gtest_main-mdd.lib(gtest_main.obj)и смог удалить его таким образом. - person Manolete   schedule 13.05.2011