如何取消修饰 Visual Studio 中的链接器对象名称?

How to undecorate linker object names in Visual Studio?

要取消修饰 Visual Studio 在编译库中生成的损坏的 C++ 名称,可以使用 undname.exe。但是,如果库由于未解析的外部符号而无法编译,我在识别未损坏的名称时遇到问题。

示例:

Error LNK2001 unresolved external symbol __imp_ldap_value_free_len libcurl.lib(ldap.obj)

当我尝试取消修饰该名称时,我得到以下信息:

C:\Program Files (x86)\Microsoft Visual Studio 14.0>undname.exe __imp_ldap_value_free_len
Microsoft (R) C++ Name Undecorator
Copyright (C) Microsoft Corporation. All rights reserved.

Undecoration of :- "__imp_ldap_value_free_len"
is :- "__imp_ldap_value_free_len"

这表明链接器对中间目标文件使用了不同的修改格式。如何获取原始方法头文件?

了解 __imp_ldap_value_free_len 形式的名称的重要一点是删除 __imp_ 前缀并找出其余符号名称的来源。 Wldap32.dll中确实有一个ldap_value_free_len(你link反对Wldap32.lib)。