I have a project whose output is a library (.lib). The project depends on a third party library (also a .lib). In order to avoid projects built on top of my library having to worry about this third party dependency, I have used the librarian to include it in mine (Project Properties > Librarian > General > Additional Dependencies).
However, when I build a separate executable project which links to my library, I get a bunch of warnings along the lines of:
MyProject.lib(someThirdPartyObjectFile.obj) : warning LNK4099: PDB ‘vc110.pdb’ was not found with ‘MyProject.lib(someThirdPartyObjectFile.obj)’ or at ‘\vc110.pdb’; linking object as if no debug info
This means (I assume) that I will be able to debug any code belonging to my library, but not to the third party library.
How can I instruct Visual Studio to also include the contents of the third party library’s PDB in mine?
The static library has probably been moved, so the compiler can’t find the symbols from it. You have several options:
/Z7, which embeds the debug info in the code (whereas/Ziand/ZIput it in a separate file).Settings > C++ > Output Files > Program Database File Name, probably similar in VS2010).You can find more information here and here.