2013-01-10 16 views
8

Ho un progetto il cui output è una libreria (.lib). Il progetto dipende da una libreria di terze parti (anche una .lib). Per evitare che i progetti costruiti sulla mia biblioteca debbano preoccuparsi di questa dipendenza di terze parti, ho usato il librarian per includerlo nella mia (Proprietà del progetto> Bibliotecario> Generale> Dipendenze aggiuntive).Inclusione di file .pdb con bibliotecario in Visual Studio

Tuttavia, quando ho costruire un progetto eseguibile separato che collega alla mia biblioteca, ho un sacco di avvertimenti lungo le linee di:

MyProject.lib (someThirdPartyObjectFile.obj): LNK4099 avvertimento: PDB ' vc110.pdb "non è stato trovato con" MyProject.lib (someThirdPartyObjectFile.obj) "o su" \ vc110.pdb "; che collega oggetto come se non informazioni di debug

Questo significa (presumo) che sarò in grado di eseguire il debug alcun codice appartenente alla mia biblioteca, ma non alla libreria di terze parti.

Come posso impostare Visual Studio in modo che includa anche il contenuto del PDB della libreria di terze parti nel mio?

+0

È ancora possibile eseguire il debug senza file 'pdb', ma sarà senza informazioni di debug (nomi di funzione, eccetera...). Ho avuto questo avvertimento una volta, ma era senza conseguenze (e non ricordo come l'ho risolto). Era con VS2008, però. Forse puoi provare a compilare ed eseguire il debug, per vedere se le informazioni di debug sono realmente utilizzate. Ultimo: lib statico o dinamico? – Synxis

+1

@Synxis Libica statica. – JBentley

+0

@Synxis Ho intenzione di, non ho ancora avuto la possibilità di provare ancora le soluzioni proposte. Lo farò presto. – JBentley

risposta

6

La libreria statica è stata probabilmente spostata, quindi il compilatore non riesce a trovare i simboli da esso. Sono disponibili diverse opzioni:

  • cambio formato debug per /Z7, che incorpora le informazioni di debug nel codice (mentre /Zi e /ZI metterla in un file separato).
  • modificare la configurazione di output del file pdb (per VS2005 era Settings > C++ > Output Files > Program Database File Name, probabilmente simile in VS2010).

Potete trovare ulteriori informazioni here e here.

+3

Grazie, ho rivisitato questo problema e dalla tua risposta hai capito qual è il problema. Visual Studio posiziona di default il file PDB nella cartella Intermediate anziché nella cartella Output, quindi non è stato possibile trovare il PDB della libreria di terze parti quando ci collegavo ad esso. La modifica dell'impostazione da menzionata da $ (IntDir) vc $ (PlatformToolsetVersion) .pdb' a '$ (OutDir) vc $ (PlatformToolsetVersion) .pdb' garantisce che il PDB sia collocato nella stessa cartella dell'output .lib. Non ho idea del motivo per cui Visual Studio non si comporta in modo predefinito, poiché collocare il PDB nella cartella intermedia non ha senso per me. – JBentley

0

Vai alla pagine delle proprietà (Alt + F7) Linker, tutte le opzioni, Genera informazioni di debug impostato in No Posizione

+0

Perché? Inoltre, può avere effetti collaterali negativi? – anatolyg

Problemi correlati