错误“未定义引用'log4cplus :: Logger :: operator =(log4cplus :: Logger&&)'”

时间:2015-09-21 06:21:45

标签: c++11 g++ log4cplus

现在我想编译一个需要ld liblog4cplus.a的项目时出现问题 当我使用编译选项-std=c++11时,则出现错误

  

对'log4cplus :: Logger :: operator =(log4cplus :: Logger&&)'的未定义引用

但整个项目需要选项-std=c++11
那么我该如何解决这个问题呢?

PS:在Ubuntu 12.04上编译,gcc version:4.8.2liblog4cplus version:1.1.3

2 个答案:

答案 0 :(得分:1)

您必须使用或不使用-std=c++11标志编译两者您的代码和log4cplus库。不支持混合编辑。

答案 1 :(得分:0)

我的解决方案:

log4cplus::Logger g_piano_logger; auto logger = log4cplus::Logger::getInstance(... g_logger = logger;

或重建log4cplus

注意log4cplus-1.1.1 / include / log4cplus / logger.h中的LOG4CPLUS_HAVE_RVALUE_REFS

Logger& operator=(const Logger& rhs); #if defined (LOG4CPLUS_HAVE_RVALUE_REFS) Logger (Logger && rhs); Logger & operator = (Logger && rhs); #endif