A beneficio degli altri, ho pensato di includere ciò che ho fatto.
Dal momento che non è possibile far sì che Visual Studio (2010 nel mio caso) ignori gli avvisi LNK4204, il mio approccio è stato quello di dargli ciò che voleva: i file pdb. Dato che nel mio caso stavo usando le librerie open source, ho già il codice che crea i file pdb.
MA, l'impostazione predefinita è denominare tutti i file PDF nella stessa cosa: vc100.pdb nel mio caso. Poiché hai bisogno di un .pdb per ogni .lib, questo crea un problema, specialmente se stai usando qualcosa come ImageMagik, che crea circa 20 file .lib statici. Non è possibile avere 20 file lib in una directory (a cui fa riferimento il linker dell'applicazione per collegarsi nelle librerie) e tutti i 20 file .pdb si chiamano la stessa cosa.
La mia soluzione era quella di ricostruire i miei file di libreria statica e configurare VS2010 per denominare il file .pdb rispetto al PROGETTO. In questo modo, ogni .lib ottiene un .pdb dal nome simile e puoi inserire tutti i LIB e PDB in una directory per il tuo progetto da utilizzare.
Quindi per la configurazione "Debug", ho modificato:
Proprietà-> Proprietà di configurazione -> C / C ++ -> File di output -> Nome file database programma da
$ (IntDir) vc $ (PlatformToolsetVersion) PDB
essere il seguente valore:
$ (OutDir) vc $ (PlatformToolsetVersion) D $ (ProjectName) PDB
Ora invece che da qualche parte nella directory intermedia, i file .pdb vengono scritti nella directory di output, dove vengono scritti anche i file .lib e, cosa più importante, sono denominati con un suffisso del nome del progetto D + . Ciò significa che ogni progetto di libreria produce un .lib del progetto e un .pdb specifico del progetto.
Ora sono in grado di copiare tutti i miei file .lib di rilascio, i miei file .lib di debug e i file .pdb di debug in un unico posto sul mio sistema di sviluppo e il progetto che utilizza quella libreria di terze parti in modalità di debug, ha il pdb file necessari in modalità debug.