C ++中库中未解析的外部符号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++中库中未解析的外部符号相关的知识,希望对你有一定的参考价值。
我正在尝试编译在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天了。任何人都可以来帮助我。
你的清单
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文件。
我终于发现它是由de Visuel C ++(VS 98)的旧版本引起的,他可能与我的年龄相同。在2017年Visuel Stdio中使用VS98后(听起来很荒谬),代码可以正确构建。我认为这个问题可能只发生在我身上。但是,无论如何,我希望这个解决方案能够帮助别人。
以上是关于C ++中库中未解析的外部符号的主要内容,如果未能解决你的问题,请参考以下文章
求解决java中用jdbc方式连接mysql数据库的问题,错误异常如下:(解决后再加分)