C ++中库中未解析的外部符号

问题描述 投票:0回答:2

我正在尝试编译在Visual Studio 2017中用C ++编写的un软件,但我在库中遇到了问题。描述是这样的。

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2001 unresolved external symbol "public: virtual void __thiscall CEZOptionsDlg::AddButton(class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > >,unsigned int)" (?AddButton@CEZOptionsDlg@@UAEXV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@I@Z)

我已经在“VC ++目录”中包含了库的路径,并在“附加库目录”中添加了* .lib。该设置处于“Debug”,“x86”模式。

我试图更改“运行时库”中的设置但它不起作用。我试图改变“调用约定”,但它也不起作用。

因为它是一个很久以前写的软件,我怀疑这个问题是否可能出现在x86和x32上。但是在“配置管理器”中,它在平台win32上运行。这不应该是错的。

我也怀疑它可能是.dll中的问题,但我只是编译软件。它应该只与.lib相关

我不知道* .lib是否完整,因为我没有这个库的源代码。

我被困在这个问题2天了。任何人都可以来帮助我。

c++ visual-studio dll development-environment lib
2个回答
0
投票

你的清单

1)确认工具包V110,v120,v14,v141

2)确认x86或x64

3)确认MT(静态 - >只需要lib)或ML(动态 - >需要一个dll和lib)

4)DLL可能是发布版本或调试版本

5)VS SDK版本(SDK 7.xx,SDK 8.1,SDK 10.xxx等)

使用VS 2017中的dumpbin.exe查找lib文件中导出的方法和其他签名的详细信息。使用dependency-walker(在网上免费下载)来分析DLL文件。


0
投票

我终于发现它是由de Visuel C ++(VS 98)的旧版本引起的,他可能与我的年龄相同。在2017年Visuel Stdio中使用VS98后(听起来很荒谬),代码可以正确构建。我认为这个问题可能只发生在我身上。但是,无论如何,我希望这个解决方案能够帮助别人。

© www.soinside.com 2019 - 2024. All rights reserved.