如何取消修饰 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)。
要取消修饰 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)。