问题:
D:\Visual Studio 2017\Common7\IDE\WebApi.cpp.obj : error LNK2019: 无法解析的外部符号 "public: __cdecl mediakit::RecordMysqler::RecordMysqler(void)" (??0RecordMysqler@mediakit@@QEAA@XZ),该符号在函数 "public: void __cdecl <lambda_960fbd2229e285ea1879e1b1011a1ff4>::operator()(class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct toolkit::variant,struct mediakit::StrCaseCompare,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,struct toolkit::variant> > > &)const " (??R<lambda_960fbd2229e285ea1879e1b1011a1ff4>@@QEBAXAEAV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Uvariant@toolkit@@UStrCaseCompare@mediakit@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@Uvariant@toolkit@@@std@@@2@@std@@@Z) 中被引用
解决:
遇到此种问题时有时要分情况
(1)在cmake工程中遇到此问题
首先要确保在CMakeLists.txt中要包含这些文件的路径。
如果不是路径问题,那么有可能是由于新增头文件(.h)和源文件(.cpp)而没有重新CMake导致工程中检测不到该文件而导致错误。因此在cmake工程中如果新增了文件,那么就需要把原来cmake生成的问题件删除后重新生成。
(2)缺少lib库
在属性中配置了头文件的路径、lib的路径。在项目中,添加该dll的.h声明文件。
函数只是在.h中进行了声明,并没有在.cpp中实现,此时只要实现即可。