当前位置: 首页 > 知识库问答 >
问题:

如何删除警告LNK4099:找不到PDB'lib.PDB'

廉实
2023-03-14

在静态编译的链接阶段,在Windows上生成时可能会出现LNK4099警告。

libcurl_a_debug.lib(rc2_cbc.obj) : warning LNK4099: PDB 'lib.pdb' was not found with 'libcurl_a_debug.lib(rc2_cbc.obj)' or at 'C:\dev\scaler\center\dlux\lib.pdb'; linking object as if no debug info

共有1个答案

涂泰平
2023-03-14

了解潜在的问题是缺少警告中提到的库的调试符号文件(.pdb)。库文件包含基于对象文件的。pdb静态引用。当一个库由另一个库使用并且使用静态编译时,Visual Studio会将所有符号收集到一个。pdb中,并更新对象文件中的。pdb引用。但是,如果它找不到符号,它就会把旧路径留在原地。

通过重新编译警告中提到的库来修复警告,并确保编译器可以访问每个引用库的。pdb。这包括确定找不到哪个。pdb文件,然后进行更改以确保可以找到。pdb。

哪个对象文件(也就是库)缺少符号(.pdb)?

C:\dev\libcurl\win\lib>lib /list libcurl_a_debug.lib > list_of_object_files_in_library.txt

C:\dev\scaler\center\agent\thirdparty\libcurl\win\lib>more list_of_object_files_in_library.txt
Microsoft (R) Library Manager Version 10.00.40219.01
Copyright (C) Microsoft Corporation.  All rights reserved.

..\builds\libcurl-vc10-x86-debug-static-ssl-static-ipv6-spnego-obj-lib/file.obj
..\builds\libcurl-vc10-x86-debug-static-ssl-static-ipv6-spnego-obj-lib/timeval.obj
..\builds\libcurl-vc10-x86-debug-static-ssl-static-ipv6-spnego-obj-lib/rc2_cbc.obj

...
C:\dev\scaler\center\agent\thirdparty\libcurl\win\lib>lib /extract:..\builds\libcurl-vc10-x86-debug-static-ssl-static-ipv6-spnego-obj-lib/timeval.obj libcurl_a_debug.lib
Microsoft (R) Library Manager Version 10.00.40219.01
Copyright (C) Microsoft Corporation.  All rights reserved.
C:\dev\scaler\center\agent\thirdparty\libcurl\win\lib>dumpbin /section:.debug$T /rawdata rc2_cbc.obj > dump_of_object_file_debug_info.txt

C:\dev\scaler\center\agent\thirdparty\libcurl\win\lib>more dump_of_object_file_debug_info.txt
Microsoft (R) COFF/PE Dumper Version 10.00.40219.01
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file ./rc2_cbc.obj

File Type: COFF OBJECT

SECTION HEADER #9
.debug$T name
       0 physical address
       0 virtual address
      5C size of raw data
    1D53 file pointer to raw data (00001D53 to 00001DAE)
       0 file pointer to relocation table
       0 file pointer to line numbers
       0 number of relocations
       0 number of line numbers
42100040 flags
         Initialized Data
         Discardable
         1 byte align
         Read Only

RAW DATA #9
  00000000: 04 00 00 00 56 00 15 15 03 7A 47 A3 3D 4A 8C 4B  ....V....zGú=J.K
  00000010: A2 A5 26 D3 D6 57 15 46 3A 00 00 00 73 3A 5C 73  óÑ&ËÍW.F:...s:\s
  00000020: 63 61 6C 65 78 2E 6E 65 77 5C 63 65 6E 74 72 6F  caler.new\center
  00000030: 5C 6F 70 65 6E 73 73 6C 5C 62 75 69 6C 64 5C 6F  \openssl\build\o
  00000040: 70 65 6E 73 73 6C 2D 31 2E 30 2E 30 62 5C 74 6D  penssl-1.0.0b\tm
  00000050: 70 33 32 5C 6C 69 62 2E 70 64 62 00              p32\lib.pdb.

  Summary

          5C .debug$T
...
!IF DEFINED(VC10)
NT_MAK_FLAGS = APP_CFLAG="/GX /GZ /MTd /Fdtmp32.dbg/app" LIB_CFLAG="/Zl /Z7 /Fdtmp32.dbg/lib"
!ENDIF
...

lib.pdb的符号文件名及其相对于构建的路径由/fdtmp32.dbg/lib提供。

问题是,nt_mak_flags被重用用于编译openssl时生成的许多库。结果,lib.pdb被重写(覆盖)除最后一个库之外的所有库。为了解决这个问题,应该为每个库指定一个唯一的名称。pdb。为了进一步简化,请确保编译位置与libcurl构建位于同一树中。

 类似资料:
  • C:\Users\Admin\anaconda3\lib\site packages\ipykernel\u启动器。py:7:SettingWithCopyWarning:试图在数据帧切片的副本上设置值 请参阅留档中的注意事项:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view

  • 问题内容: 我知道以前曾在这里问过这种类型的问题,但我没有找到可行的解决方案。我有一个要在Windows 10上转换为exe的python文件。我运行,它输出 了很多 警告: 如您所见,该exe已成功创建,但是在运行时却无法正常运行。 编辑:我启用了调试运行它,显然它不能导入ctypes,它引发名称错误。它仅在与pyinstaller一起运行时才执行此操作,当以.py文件运行时,它可以正常工作。

  • 对于从Spring Boot API发送的每个查询,我都会收到以下警告消息,并希望将其从日志中删除。 我正在使用RestHighLevelClient。根据Elasticsearch的说法,这可以通过迁移到他们最近推出的Elasticsearch Java API客户端来解决。然而,这将需要很长时间才能让我们做出这样的改变。 Elasticsearch版本是7.14.1,不幸的是,我们无法升级它。

  • 作为一个Vue.js的初学者,我有一个看起来像这样的组件: “data.artist.name”在传递给数据道具的对象中存在且正确。但是我怎样才能摆脱关于嵌套艺术家名称的警告呢? [Vue warn]:计算表达式“data.artist.name”时出错:类型错误:scope.data.artist未定义(在组件中找到): 埃塔:啊,对不起,是的,显示“数据”会有帮助: {“id”:23182,“

  • 问题内容: 我有一些PHP代码。当我运行它时,出现警告消息。 如何删除/禁止/忽略这些警告消息? 问题答案: 您确实应该修复引起警告的所有内容,但是可以使用来控制错误的可见性。要跳过警告消息,您可以使用以下方法:

  • 在我使用的Python模块中,我希望确保在通过在远程机器上运行脚本时,它也能工作。因此,我: 它起作用了。太糟糕了,当我直接在机器上运行它时(不是远程机器!),它给了我以下警告: 这是对matplotlib的调用。use()无效,因为已经选择了后端;matplotlib。必须在pylab、matplotlib之前调用use()。pyplot或matplotlib。后端是第一次导入的。 如何删除此消