c++ - 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
我不太确定我错过了什么,所以任何帮助将不胜感激。谢谢您的帮助!
解决方案
通常,添加 lib 需要三个步骤:
Properties->C/C++->General->Additional Include Directories
Properties->Linker->General->Additional Library Directories
Properties->Linker->Input->Additional Dependencies
您可以检查您是否已完成上述三个步骤。
推荐阅读
- java - 如何在java中下载unirest post call response?
- php - 如何在php中将字符串与OR运算符连接起来?
- laravel - 如何在不构建自定义工具的情况下实现多对多 nova 资源
- python - 如何修复'TypeError:在方法'MFnMesh_anyIntersection'中,Maya中Python中'MINtArray const *'类型的参数4错误
- hibernate - 多个参数同时搜索 Criteria Api
- jquery - 如何在 jquery ajax 中使用动作名称而不是 insinde html.actionlink?
- regex - 是否可以从位于 Google 表格的不同列中的不同句子中找到尽可能多的匹配词?
- java - 大查询 API 异常
- javascript - 删除对象内部的对象属性
- c# - 为什么不适用于try方法时不进入catch?