我正在尝试编译在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)
我已经在&#34; VC ++目录中包含了库的路径&#34;并在&#34;附加库目录&#34;中添加* .lib。 该设置处于模式&#34; Debug&#34; ,&#34; x86&#34;。
我试图改变&#34;运行时库&#34;中的设置。但它不起作用。 我试图改变调用约定&#34;,但它也不起作用。
因为它是一个很久以前编写的软件,我怀疑这个问题是否可能出现在x86和x32上。但是在&#34;配置管理器&#34;中,它在平台win32上运行。这不应该是错的。
我也怀疑它可能是.dll中的问题,但我只是编译软件。它应该只与.lib
相关我不知道* .lib是否完整,因为我没有此库的源代码。
我被困在这个问题中2天了。任何人都可以来帮助我。
答案 0 :(得分:0)
您的清单
1)确认工具包V110,v120,v14,v141
2)确认x86或x64
3)确认MT(静态 - >仅需要lib)或ML(动态 - &gt;需要dll&amp; lib)
4)DLL可能是发布版本或调试版本
5)VS SDK版本(SDK 7.xx,SDK 8.1,SDK 10.xxx等)
使用VS 2017中的dumpbin.exe查找lib文件中导出的方法和其他签名的详细信息。使用dependency-walker(在网上免费下载)来分析DLL文件。
答案 1 :(得分:0)
我终于发现它是由de Visuel C ++(VS 98)的旧版本引起的,他可能与我的年龄相同。在2017年Visuel Stdio中使用VS98后(听起来很荒谬),代码可以正确构建。 我认为这个问题可能只发生在我身上。但是,无论如何,我希望这个解决方案能够帮助其他人。