glog on visual studio 2015

glog on visual studio 2015

本文关键字:2015 studio visual on glog      更新时间:2023-10-16

我正在尝试使用Visual Studio 2015在windows上构建Google glog库。在添加#include以解决Windows上的std::min问题后,我得到了下面的2个主要错误(1重复了几次)。

1>c:glogglog-0.3.3srcwindowsport.h(117): warning C4005: 'va_copy': macro redefinition
1>  c:program files (x86)microsoft visual studio 14.0vcincludestdarg.h(20): note: see previous definition of 'va_copy'
1>c:glogglog-0.3.3srcwindowsport.cc(58): error C2084: function 'int snprintf(char *const ,const size_t,const char *const ,...)' already has a body
1>  c:program files (x86)windows kits10include10.0.10150.0ucrtstdio.h(1932): note: see previous definition of 'snprintf'
1>  vlog_is_on.cc
1>c:glogglog-0.3.3srcwindowsport.h(117): warning C4005: 'va_copy': macro redefinition
1>  c:program files (x86)microsoft visual studio 14.0vcincludestdarg.h(20): note: see previous definition of 'va_copy'
1>c:glogglog-0.3.3srcwindowsgloglogging.h(1266): error C2280: 'std::basic_ios<char,std::char_traits<char>>::basic_ios(const std::basic_ios<char,std::char_traits<char>> &)': attempting to reference a deleted function
1>  c:program files (x86)microsoft visual studio 14.0vcincludeios(189): note: see declaration of 'std::basic_ios<char,std::char_traits<char>>::basic_ios'
1>  c:glogglog-0.3.3srcwindowsgloglogging.h(1266): note: This diagnostic occurred in the compiler generated function 'google::LogMessage::LogStream::LogStream(google::LogMessage::LogStream &&)'
1>  utilities.cc

似乎是编译器生成的移动函数的问题,但显式删除它也不起作用。

LogMessage(const LogMessage&&) = delete;

任何想法?

欢呼,迈克

生成的函数不是LogMessage(const LogMessage&&) = delete;
但它是:
LogStream:: LogStream(谷歌::LogMessage:: LogStream,,)。

在内部,它将尝试调用LogStream的复制构造函数,从而调用标记为已删除的ostream。
解决方案:
在LogStream类中声明:
LogStream(const LogStream&) = delete;
LogStream&operator=(const LogStream&) = delete;;

欢呼