none
LNK4099 problem.

    Question

  •  

    Hi,

     

    I am using a 3rd party SDK to build one sample DLL application. I am using their static lib to link with my project.

    During linking, I am getting the following warning message:

    gdal.lib(cplgetsymbol.obj) : warning LNK4099: PDB 'vc80.pdb' was not found with '..\dev\dw32\gdal.lib' or at '..\dev\dw32\vc80.pdb'; linking object as if no debug info

     

    There are lots of such warnings. I am using VS2005 to build my application.

    In code generation I am using Multi Threaded Debug DLL (/MDd).

     

    Can you tell me the way to remove LNK 4099 warnings and what is the cause for this?

     

    Regards

    Sunil

    Friday, October 19, 2007 9:17 AM

Answers

  • Hi Sunil,

     

    I am afraid there is not much you can do about it. You see this warning because the third-party library was complied with either /Zi or /ZI compiler option, so a link to vc80.pdb was added to the .obj files in the library. When you link the library to your project, linker will looking for that vc80.pdb file but of course you don't have it. So this means you can safely ignore that warning because it is just annoying. Normally you can use /ignore linker setting to ignore certain linker warnings, unfortunately this does not work for LNK4099 warning(see a list of not unignorable warnings). If, however, you can talk to the library publisher, you may ask for a rebuild version SDK(without /Zi and /ZI of crouse) to fix the issue.

     

    hope it helps

    rico

    Wednesday, October 24, 2007 11:10 AM
    Moderator

All replies

  • "Linker Tools Warning LNK4099"

    http://msdn2.microsoft.com/en-us/library/b7whw3f3(VS.80).aspx
    Friday, October 19, 2007 4:16 PM
  • I have also tried out this link. See here the problem is not in the code but it is in the .lib file That I am using.

     

    So it is giving me linker warnings and nothing can be done at file level.

     

    So please think and give me solutions.

     

    Anybody who works for Microsoft, if you can, please do it.

    Monday, October 22, 2007 5:28 AM
  • Hi Sunil,

     

    I am afraid there is not much you can do about it. You see this warning because the third-party library was complied with either /Zi or /ZI compiler option, so a link to vc80.pdb was added to the .obj files in the library. When you link the library to your project, linker will looking for that vc80.pdb file but of course you don't have it. So this means you can safely ignore that warning because it is just annoying. Normally you can use /ignore linker setting to ignore certain linker warnings, unfortunately this does not work for LNK4099 warning(see a list of not unignorable warnings). If, however, you can talk to the library publisher, you may ask for a rebuild version SDK(without /Zi and /ZI of crouse) to fix the issue.

     

    hope it helps

    rico

    Wednesday, October 24, 2007 11:10 AM
    Moderator
  • I have a solution with 7 projects. 6 of them are static libraries, 1 is an executable. Obviously executable links to all the statics. All /mdd(/md) . All Zi(ZI). No third party components, but Microsoft's. If I pre-build static libraries outside in another solution - I'll get this warning. If I do rebuild all , which kind of defeats the purpose, I do not get that warning. It seems like a bug in the Visual studio to me, but I might be wrong.

     

    Saturday, January 26, 2008 6:59 PM
  • Extract the object files from the library. Remove the .debug$T section from the object files. Reconstruct the library.

    Saturday, June 30, 2012 7:57 AM