如何在Visual Studio中取消设计链接器对象名称?

时间:2018-02-11 04:00:10

标签: c++ visual-studio linker name-mangling

要解开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"

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

1 个答案:

答案 0 :(得分:1)

要了解__imp_ldap_value_free_len形式的名称,重要的是删除__imp_前缀并找出剩余符号名称的来源。确实在Wldap32.dll中有一个ldap_value_free_len(你链接到Wldap32.lib)。