VS2019 中使用log4cplus,报错link2019处理

问题

工程中引入了log4cplusSD.lib静态库后,还是报link2019链接错误。
代码用有一句:

Logger LogUtil::logger_ = log4cplus::Logger::getInstance("eqdata");
  1. 一开始是报这样的错误:
    错误 C2665 “log4cplus::Logger::getInstance”: 2 个重载中没有一个可以转换所有参数类型
    参数不匹配。
    改成如下:
Logger LogUtil::logger_ = log4cplus::Logger::getInstance(log4cplus::helpers::towstring("eqdata"));

编译时过了,但是有链接问题:
错误 LNK2019 无法解析的外部符号 “public: static class log4cplus::Logger __cdecl log4cplus::Logger::getInstance(class std::basic_string,class std::allocator > const &)” (?getInstance@Logger@log4cplus@@SA?AV12@AEBV? b a s i c s t r i n g @ W U ? basic_string@_WU? basicstring@WU?char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z)

解决

[参考了这里]https://blog.csdn.net/Jane_yuhui/article/details/52065180?locationNum=6&fps=1

代码改回:

Logger LogUtil::logger_ = log4cplus::Logger::getInstance("eqdata");

然后工程属性这里修改成多字节字符集。搞定。
VS2019 中使用log4cplus,报错link2019处理_第1张图片

结语

想不到还有这样的坑!!

你可能感兴趣的:(C++)