Pomyślałem, że dla dobra innych uwzględnię to, co zrobiłem.
Ponieważ nie możesz zmusić Visual Studio (w moim przypadku 2010) do ignorowania ostrzeżeń LNK4204, moim podejściem było zapewnienie mu tego, czego chciał: plików pdb. Ponieważ w moim przypadku korzystałem z bibliotek open source, mam już kod budujący pliki pdb.
ALE, domyślnie wszystkie pliki PDF są nazwane tak samo: w moim przypadku vc100.pdb. Ponieważ potrzebujesz pliku .pdb dla każdego pliku .lib, stwarza to problem, szczególnie jeśli używasz czegoś takiego jak ImageMagik, który tworzy około 20 statycznych plików .lib. Nie możesz mieć 20 plików lib w jednym katalogu (do którego linker twojej aplikacji odwołuje się w bibliotekach) i mieć wszystkie 20 plików .pdb o nazwie to samo.
Moim rozwiązaniem było odbudowanie plików biblioteki statycznej i skonfigurowanie VS2010 tak, aby nazwał plik .pdb w odniesieniu do PROJEKTU. W ten sposób każdy plik .lib otrzymuje podobnie nazwany plik .pdb i możesz umieścić wszystkie biblioteki LIB i PDB w jednym katalogu do wykorzystania przez projekt.
Tak więc dla konfiguracji „Debugowanie” zmodyfikowałem:
Właściwości -> Właściwości konfiguracji -> C / C ++ -> Pliki wyjściowe -> Nazwa pliku bazy danych programu z
$ (IntDir) vc $ (PlatformToolsetVersion) .pdb
być następującą wartością:
$ (OutDir) vc $ (PlatformToolsetVersion) D $ (ProjectName) .pdb
Teraz, zamiast gdzieś w katalogu pośrednim, pliki .pdb są zapisywane do katalogu wyjściowego, w którym zapisywane są również pliki .lib, ORAZ, co najważniejsze, są one nazywane z przyrostkiem nazwy projektu D + . Oznacza to, że każdy projekt biblioteki wytwarza projekt .lib i plik .pdb specyficzny dla projektu.
Teraz mogę skopiować wszystkie moje pliki .lib wydania, pliki debugowania .lib i pliki debugowania .pdb w jedno miejsce w moim systemie programistycznym, a projekt, który korzysta z tej biblioteki innej firmy w trybie debugowania, ma pdb pliki, których potrzebuje w trybie debugowania.