PDB文件'vc100.pdb'未能找到

26

我已经下载了FreeImage源代码,并为X64 MT DLL自己进行了静态构建。

一切都很正常,除了当我使用freeimage.lib文件中的链接时,我会收到许多令人烦恼的链接器警告,而我并不完全理解其原因。

2>freeimage.lib(zutil.obj) : warning LNK4099: PDB 'vc100.pdb' was not found with 'freeimage.lib(zutil.obj)' or at '\bin\Release\vc100.pdb'; linking object as if no debug info

为什么会出现这种情况,我该如何消除它?我猜想是在构建FreeImage时使用了某个编译器选项。

以下是FreeImageLib项目的命令行:

/I"..\" /I"..\ZLib" /I"..\DeprecationManager" /I"..\OpenEXR\Half" /I"..\OpenEXR\Iex" /I"..\OpenEXR\IlmImf" /I"..\OpenEXR\Imath" /I"..\OpenEXR\IlmThread" /nologo /W3 /WX- /Od /D "WIN32" /D "_DEBUG" /D "OPJ_STATIC" /D "FREEIMAGE_LIB" /D "_CRT_SECURE_NO_DEPRECATE" /D "LIBRAW_NODLL" /D "_VC80_UPGRADE=0x0710" /D "_MBCS" /GF- /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /openmp /Fp".\Debug/FreeImageLib.pch" /Fa".\Debug/" /Fo".\Debug/" /Fd".\Debug/" /Gd /errorReport:queue

编辑:

我通过将其构建为动态库来解决了问题。虽然这不是我希望得到的解决方案...


3
解决这个问题的正确方法已经在这里描述了:http://cldoten.wordpress.com/2009/07/01/vs2008-fixing-the-warning-pdb-vc90-pdb-not-found/ 它在 Visual Studio 2010 上也对我有效。 - Gautam Jain
cldoten链接没有解决我的问题。我仍然找不到它;但是我正在使用Qt,所以可能是另一个问题,我猜测。 - Almo
1个回答

35
当您使用带有调试符号的静态库进行编译时,会得到一个名为vc100.pdb的文件,该文件与库一起提供。此文件中的符号信息将在链接过程中与其他库的信息合并,以生成您正在链接的EXE或DLL的最终PDB文件。链接器报告找不到它期望找到的文件。
这只是一个警告,并且仅会在调试版本中发生。如果您以发布配置编译FreeImage,则此警告应该消失。或者查找链接器未找到vc100.pdb文件的原因。
另一个回答给出的内容是荒谬的胡言乱语。

我忘了提到的是“调试模式”。除此之外,我认为增量链接是非常明显的。从问题中我感觉到pdb文件丢失的问题与链接器在调试过程中找不到符号有关。我不确定为什么这是完全错误的。我知道pdb文件和代码一样重要,但我认为它仅用于调试目的。如果我的假设是错误的,请您纠正一下。 - Ajai
2
当我说“疯狂”时,我指的是两件事情(其中一件是由其他人说的,不是你):一是认为可以从源代码所在的网站下载PDB文件(好像它会神奇地与你自己机器上编译的二进制文件匹配——这是荒谬的想法);二是声称未附带PDB文件就“非法”分发DLL文件。我知道第二件事情不是你提出的。 - brewbuck
我确定 pdb 文件可以从网站下载的原因是,当我在使用 WebKit 的源代码时,我从 WebKit 的网站下载了源代码,然后我从苹果的网站下载了符号文件,并且它确实适用于我。在加载符号后,我能够调试相同的代码。我基于这个假设回答了问题。我理解错了吗? - Ajai
1
好的,也许我误解了你的意思。如果我理解正确,请告诉我。您以二进制形式下载了WebKit。您下载了一个PDB文件。并且您下载了相应的源代码。这三件事允许您在源代码级别上调试WebKit。是这样吗?我假设您拿到了WebKit的源代码,编译它,并使用其他人的PDB文件调试生成的二进制文件。那是完全不可能的 :-) - brewbuck
不幸的是,我做了后者... 我从webkit.org下载了webkit的源代码,并从苹果的网站下载了相应的符号文件(pdb文件),然后在VS2005中进行了编译和调试。我不知道这是如何可能的,但我做到了,一切都正常运作... 嗯,也许我在哪里误解了它... 嗯,让我再试一次以满足我的心理需求... - Ajai
我如何指定 vc100.pdb 文件的位置? 我正在使用第三方库,它将 vc100.pdb 文件放置在与 .lib 文件不同的文件夹中。 我尝试将该文件夹添加到附加库目录中,但无效。 - bouvierr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接