在VS2015中使用easylogging++添加支持Unicode

我在win32应用程序中使用easylogging++做日志,字符集使用的是Unicode,默认无法输出中文到日志,看了http://blog.csdn.net/Fish_55_66/article/details/49451321中的介绍,试着用
  1. #define ELPP_UNICODE  
  2. #include "easylogging++.h"  
  3.   
  4. INITIALIZE_EASYLOGGINGPP  
  5.   
  6. int main(int argc, char** argv)  
  7. {  
  8.     /// 同时使用 START_EASYLOGGINGPP 才能使用Unicode   
  9.     START_EASYLOGGINGPP(argc, argv);  
  10.   
  11.     LOG(INFO) << L"宏定义演示。";  
  12.   
  13.     system("pause");  
  14.     return 0;  

  1. }  

结果编译器链接的时候报错:

1>tijianji.obj : error LNK2001: 无法解析的外部符号 "public: virtual class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __thiscall el::base::DefaultLogBuilder::build(class el::LogMessage const *,bool)const " (?build@DefaultLogBuilder@base@el@@UBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PBVLogMessage@3@_N@Z)
1>E:\__wang\workspace\Projects\tijianji\Debug\tijianji.exe : fatal error LNK1120: 1 个无法解析的外部命令

是宏INITIALIZE_EASYLOGGINGPP里面的class DefaultLogBuilder : public LogBuilder {
public:
base::type::string_t build(const LogMessage* logMessage, bool appendNewLine) const;
};引起的。报错应该是string_t无法识别引起的,这个类型声明是这样的:

#if defined(ELPP_UNICODE)
#  define ELPP_LITERAL(txt) L##txt
#  define ELPP_STRLEN wcslen
#  if defined ELPP_CUSTOM_COUT
#    define ELPP_COUT ELPP_CUSTOM_COUT
#  else
#    define ELPP_COUT std::wcout
#  endif  // defined ELPP_CUSTOM_COUT
typedef wchar_t char_t;
typedef std::wstring string_t;
typedef std::wstringstream stringstream_t;
typedef std::wfstream fstream_t;
typedef std::wostream ostream_t;
#else
#  define ELPP_LITERAL(txt) txt
#  define ELPP_STRLEN strlen
#  if defined ELPP_CUSTOM_COUT
#    define ELPP_COUT ELPP_CUSTOM_COUT
#  else
#    define ELPP_COUT std::cout
#  endif  // defined ELPP_CUSTOM_COUT
typedef char char_t;
typedef std::string string_t;
typedef std::stringstream stringstream_t;
typedef std::fstream fstream_t;
typedef std::ostream ostream_t;
#endif  // defined(ELPP_UNICODE)


我明明都定义了宏#define ELPP_UNICODE为什么还是无法解析?

最后灵机一动把ELPP_UNICODE添加到“预处理器定义”里面,结果就链接通过了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值