首页 > 解决方案 > CPR 未解决的外部符号

问题描述

我在链接 CPR ( https://whoshuu.github.io/cpr ) 以在我的 DLL 项目中使用时遇到了一些问题。

我的错误是:

1>http.obj : error LNK2019: unresolved external symbol "public: bool __cdecl cpr::CaseInsensitiveCompare::operator()(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)const " (??RCaseInsensitiveCompare@cpr@@QEBA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z) referenced in function "bool __cdecl std::_Debug_lt_pred<struct cpr::CaseInsensitiveCompare const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,0>(struct cpr::CaseInsensitiveCompare const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??$_Debug_lt_pred@AEBUCaseInsensitiveCompare@cpr@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV34@$0A@@std@@YA_NAEBUCaseInsensitiveCompare@cpr@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@1@Z)
1>http.obj : error LNK2019: unresolved external symbol "public: __cdecl cpr::Session::Session(void)" (??0Session@cpr@@QEAA@XZ) referenced in function "class cpr::Response __cdecl cpr::Post<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class cpr::Body,class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct cpr::CaseInsensitiveCompare,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &&,class cpr::Body &&,class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct cpr::CaseInsensitiveCompare,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > &&)" (??$Post@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@VBody@cpr@@V?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@UCaseInsensitiveCompare@cpr@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@2@@cpr@@YA?AVResponse@0@$$QEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@$$QEAVBody@0@$$QEAV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@UCaseInsensitiveCompare@cpr@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@3@@Z)
1>http.obj : error LNK2019: unresolved external symbol "public: __cdecl cpr::Session::~Session(void)" (??1Session@cpr@@QEAA@XZ) referenced in function "class cpr::Response __cdecl cpr::Post<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class cpr::Body,class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct cpr::CaseInsensitiveCompare,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &&,class cpr::Body &&,class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct cpr::CaseInsensitiveCompare,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > &&)" (??$Post@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@VBody@cpr@@V?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@UCaseInsensitiveCompare@cpr@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@2@@cpr@@YA?AVResponse@0@$$QEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@$$QEAVBody@0@$$QEAV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@UCaseInsensitiveCompare@cpr@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@3@@Z)
1>http.obj : error LNK2019: unresolved external symbol "public: void __cdecl cpr::Session::SetOption(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?SetOption@Session@cpr@@QEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "void __cdecl cpr::priv::set_option<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >(class cpr::Session &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &&)" (??$set_option@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@priv@cpr@@YAXAEAVSession@1@$$QEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
1>http.obj : error LNK2019: unresolved external symbol "public: void __cdecl cpr::Session::SetOption(class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct cpr::CaseInsensitiveCompare,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > const &)" (?SetOption@Session@cpr@@QEAAXAEBV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@UCaseInsensitiveCompare@cpr@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@std@@@Z) referenced in function "void __cdecl cpr::priv::set_option<class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct cpr::CaseInsensitiveCompare,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > >(class cpr::Session &,class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct cpr::CaseInsensitiveCompare,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > &&)" (??$set_option@V?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@UCaseInsensitiveCompare@cpr@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@std@@@priv@cpr@@YAXAEAVSession@1@$$QEAV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@UCaseInsensitiveCompare@cpr@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@std@@@Z)
1>http.obj : error LNK2019: unresolved external symbol "public: void __cdecl cpr::Session::SetOption(class cpr::Body &&)" (?SetOption@Session@cpr@@QEAAX$$QEAVBody@2@@Z) referenced in function "void __cdecl cpr::priv::set_option<class cpr::Body>(class cpr::Session &,class cpr::Body &&)" (??$set_option@VBody@cpr@@@priv@cpr@@YAXAEAVSession@1@$$QEAVBody@1@@Z)
1>http.obj : error LNK2019: unresolved external symbol "public: class cpr::Response __cdecl cpr::Session::Post(void)" (?Post@Session@cpr@@QEAA?AVResponse@2@XZ) referenced in function "class cpr::Response __cdecl cpr::Post<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class cpr::Body,class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct cpr::CaseInsensitiveCompare,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &&,class cpr::Body &&,class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct cpr::CaseInsensitiveCompare,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > &&)" (??$Post@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@VBody@cpr@@V?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@UCaseInsensitiveCompare@cpr@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@2@@cpr@@YA?AVResponse@0@$$QEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@$$QEAVBody@0@$$QEAV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@UCaseInsensitiveCompare@cpr@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@3@@Z)
1>C:\Dev\ETS\telemetry\bin\Debug\x64\telemetry.dll : fatal error LNK1120: 7 unresolved externals

而且我不太确定为什么,因为据我所见,它的包含方式与示例中的完全相同,但是该示例是一个 exe 项目,而我的是一个 dll,所以我不确定如果这很重要。

我的包含目录:

C:\Dev\ETS\include
C:\Dev\src\cpr_x64-windows\include

我的图书馆目录: C:\Dev\src\cpr_x64-windows\lib

我不太确定我错过了什么,所以任何帮助将不胜感激。谢谢您的帮助!

标签: c++visual-studio

解决方案


通常,添加 lib 需要三个步骤:

Properties->C/C++->General->Additional Include Directories

Properties->Linker->General->Additional Library Directories

Properties->Linker->Input->Additional Dependencies

您可以检查您是否已完成上述三个步骤。


推荐阅读