Keywords: UE4, error LNK2005 on linking libprotobuf

Case

There’re tons of LNK2005 errors on packaging project( e.g. building in Shipping mode).

May be caused by

Your project perhaps included multiple third party libraries, and they are linked a same library(e.g. libprotobuf), and this library(libprotobuf) was saved in multiple replicas in your project or engine.
e.g.: WebRTC was included in your project, libprotobuf.lib was also include as a third party library in your plugin, then packaging project would failed with error LNK2005. Because there’s another libprotobuf.lib that was included in WebRTC.

Solution

Make sure the library which was linked by multiple third party was in independence.

Example of error:

webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::AppendPartialToString(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)const " (?AppendPartialToString@MessageLite@protobuf@google@@QEBA_NPEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::AppendToString(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)const " (?AppendToString@MessageLite@protobuf@google@@QEBA_NPEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl google::protobuf::MessageLite::InitializationErrorString(void)const " (?InitializationErrorString@MessageLite@protobuf@google@@UEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: static void __cdecl google::protobuf::internal::GenericTypeHandler<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >::Merge(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)" (?Merge@?$GenericTypeHandler@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@internal@protobuf@google@@SAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAV56@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: static void __cdecl google::protobuf::internal::GenericTypeHandler<class google::protobuf::MessageLite>::Merge(class google::protobuf::MessageLite const &,class google::protobuf::MessageLite *)" (?Merge@?$GenericTypeHandler@VMessageLite@protobuf@google@@@internal@protobuf@google@@SAXAEBVMessageLite@34@PEAV534@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::MergeFromCodedStream(class google::protobuf::io::CodedInputStream *)" (?MergeFromCodedStream@MessageLite@protobuf@google@@QEAA_NPEAVCodedInputStream@io@23@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: virtual class google::protobuf::MessageLite * __cdecl google::protobuf::MessageLite::New(class google::protobuf::Arena *)const " (?New@MessageLite@protobuf@google@@UEBAPEAV123@PEAVArena@23@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParseFromArray(void const *,int)" (?ParseFromArray@MessageLite@protobuf@google@@QEAA_NPEBXH@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParseFromBoundedZeroCopyStream(class google::protobuf::io::ZeroCopyInputStream *,int)" (?ParseFromBoundedZeroCopyStream@MessageLite@protobuf@google@@QEAA_NPEAVZeroCopyInputStream@io@23@H@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParseFromCodedStream(class google::protobuf::io::CodedInputStream *)" (?ParseFromCodedStream@MessageLite@protobuf@google@@QEAA_NPEAVCodedInputStream@io@23@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParseFromString(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?ParseFromString@MessageLite@protobuf@google@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParseFromZeroCopyStream(class google::protobuf::io::ZeroCopyInputStream *)" (?ParseFromZeroCopyStream@MessageLite@protobuf@google@@QEAA_NPEAVZeroCopyInputStream@io@23@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParsePartialFromArray(void const *,int)" (?ParsePartialFromArray@MessageLite@protobuf@google@@QEAA_NPEBXH@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParsePartialFromBoundedZeroCopyStream(class google::protobuf::io::ZeroCopyInputStream *,int)" (?ParsePartialFromBoundedZeroCopyStream@MessageLite@protobuf@google@@QEAA_NPEAVZeroCopyInputStream@io@23@H@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParsePartialFromCodedStream(class google::protobuf::io::CodedInputStream *)" (?ParsePartialFromCodedStream@MessageLite@protobuf@google@@QEAA_NPEAVCodedInputStream@io@23@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParsePartialFromString(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?ParsePartialFromString@MessageLite@protobuf@google@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParsePartialFromZeroCopyStream(class google::protobuf::io::ZeroCopyInputStream *)" (?ParsePartialFromZeroCopyStream@MessageLite@protobuf@google@@QEAA_NPEAVZeroCopyInputStream@io@23@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl google::protobuf::MessageLite::SerializeAsString(void)const " (?SerializeAsString@MessageLite@protobuf@google@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl google::protobuf::MessageLite::SerializePartialAsString(void)const " (?SerializePartialAsString@MessageLite@protobuf@google@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializePartialToArray(void *,int)const " (?SerializePartialToArray@MessageLite@protobuf@google@@QEBA_NPEAXH@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializePartialToCodedStream(class google::protobuf::io::CodedOutputStream *)const " (?SerializePartialToCodedStream@MessageLite@protobuf@google@@QEBA_NPEAVCodedOutputStream@io@23@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializePartialToString(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)const " (?SerializePartialToString@MessageLite@protobuf@google@@QEBA_NPEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializePartialToZeroCopyStream(class google::protobuf::io::ZeroCopyOutputStream *)const " (?SerializePartialToZeroCopyStream@MessageLite@protobuf@google@@QEBA_NPEAVZeroCopyOutputStream@io@23@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializeToArray(void *,int)const " (?SerializeToArray@MessageLite@protobuf@google@@QEBA_NPEAXH@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializeToCodedStream(class google::protobuf::io::CodedOutputStream *)const " (?SerializeToCodedStream@MessageLite@protobuf@google@@QEBA_NPEAVCodedOutputStream@io@23@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializeToString(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)const " (?SerializeToString@MessageLite@protobuf@google@@QEBA_NPEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(message_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializeToZeroCopyStream(class google::protobuf::io::ZeroCopyOutputStream *)const " (?SerializeToZeroCopyStream@MessageLite@protobuf@google@@QEBA_NPEAVZeroCopyOutputStream@io@23@@Z) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: __cdecl google::protobuf::io::ArrayInputStream::ArrayInputStream(void const *,int,int)" (??0ArrayInputStream@io@protobuf@google@@QEAA@PEBXHH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: __cdecl google::protobuf::io::ArrayOutputStream::ArrayOutputStream(void *,int,int)" (??0ArrayOutputStream@io@protobuf@google@@QEAA@PEAXHH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: __cdecl google::protobuf::io::CopyingInputStreamAdaptor::CopyingInputStreamAdaptor(class google::protobuf::io::CopyingInputStream *,int)" (??0CopyingInputStreamAdaptor@io@protobuf@google@@QEAA@PEAVCopyingInputStream@123@H@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: __cdecl google::protobuf::io::CopyingOutputStreamAdaptor::CopyingOutputStreamAdaptor(class google::protobuf::io::CopyingOutputStream *,int)" (??0CopyingOutputStreamAdaptor@io@protobuf@google@@QEAA@PEAVCopyingOutputStream@123@H@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: __cdecl google::protobuf::io::StringOutputStream::StringOutputStream(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)" (??0StringOutputStream@io@protobuf@google@@QEAA@PEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual __cdecl google::protobuf::io::ArrayInputStream::~ArrayInputStream(void)" (??1ArrayInputStream@io@protobuf@google@@UEAA@XZ) already defined in libprotobuf.lib(unknown_field_set.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual __cdecl google::protobuf::io::ArrayOutputStream::~ArrayOutputStream(void)" (??1ArrayOutputStream@io@protobuf@google@@UEAA@XZ) already defined in libprotobuf.lib(message_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual __cdecl google::protobuf::io::CopyingInputStream::~CopyingInputStream(void)" (??1CopyingInputStream@io@protobuf@google@@UEAA@XZ) already defined in libprotobuf.lib(zero_copy_stream_impl.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual __cdecl google::protobuf::io::CopyingInputStreamAdaptor::~CopyingInputStreamAdaptor(void)" (??1CopyingInputStreamAdaptor@io@protobuf@google@@UEAA@XZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual __cdecl google::protobuf::io::CopyingOutputStream::~CopyingOutputStream(void)" (??1CopyingOutputStream@io@protobuf@google@@UEAA@XZ) already defined in libprotobuf.lib(zero_copy_stream_impl.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual __cdecl google::protobuf::io::CopyingOutputStreamAdaptor::~CopyingOutputStreamAdaptor(void)" (??1CopyingOutputStreamAdaptor@io@protobuf@google@@UEAA@XZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual __cdecl google::protobuf::io::StringOutputStream::~StringOutputStream(void)" (??1StringOutputStream@io@protobuf@google@@UEAA@XZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "private: void __cdecl google::protobuf::io::CopyingInputStreamAdaptor::AllocateBufferIfNeeded(void)" (?AllocateBufferIfNeeded@CopyingInputStreamAdaptor@io@protobuf@google@@AEAAXXZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "private: void __cdecl google::protobuf::io::CopyingOutputStreamAdaptor::AllocateBufferIfNeeded(void)" (?AllocateBufferIfNeeded@CopyingOutputStreamAdaptor@io@protobuf@google@@AEAAXXZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual void __cdecl google::protobuf::io::ArrayInputStream::BackUp(int)" (?BackUp@ArrayInputStream@io@protobuf@google@@UEAAXH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual void __cdecl google::protobuf::io::ArrayOutputStream::BackUp(int)" (?BackUp@ArrayOutputStream@io@protobuf@google@@UEAAXH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual void __cdecl google::protobuf::io::CopyingInputStreamAdaptor::BackUp(int)" (?BackUp@CopyingInputStreamAdaptor@io@protobuf@google@@UEAAXH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual void __cdecl google::protobuf::io::CopyingOutputStreamAdaptor::BackUp(int)" (?BackUp@CopyingOutputStreamAdaptor@io@protobuf@google@@UEAAXH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual void __cdecl google::protobuf::io::StringOutputStream::BackUp(int)" (?BackUp@StringOutputStream@io@protobuf@google@@UEAAXH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual __int64 __cdecl google::protobuf::io::ArrayInputStream::ByteCount(void)const " (?ByteCount@ArrayInputStream@io@protobuf@google@@UEBA_JXZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual __int64 __cdecl google::protobuf::io::ArrayOutputStream::ByteCount(void)const " (?ByteCount@ArrayOutputStream@io@protobuf@google@@UEBA_JXZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual __int64 __cdecl google::protobuf::io::CopyingInputStreamAdaptor::ByteCount(void)const " (?ByteCount@CopyingInputStreamAdaptor@io@protobuf@google@@UEBA_JXZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual __int64 __cdecl google::protobuf::io::CopyingOutputStreamAdaptor::ByteCount(void)const " (?ByteCount@CopyingOutputStreamAdaptor@io@protobuf@google@@UEBA_JXZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual __int64 __cdecl google::protobuf::io::StringOutputStream::ByteCount(void)const " (?ByteCount@StringOutputStream@io@protobuf@google@@UEBA_JXZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: bool __cdecl google::protobuf::io::CopyingOutputStreamAdaptor::Flush(void)" (?Flush@CopyingOutputStreamAdaptor@io@protobuf@google@@QEAA_NXZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "private: void __cdecl google::protobuf::io::CopyingInputStreamAdaptor::FreeBuffer(void)" (?FreeBuffer@CopyingInputStreamAdaptor@io@protobuf@google@@AEAAXXZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "private: void __cdecl google::protobuf::io::CopyingOutputStreamAdaptor::FreeBuffer(void)" (?FreeBuffer@CopyingOutputStreamAdaptor@io@protobuf@google@@AEAAXXZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual bool __cdecl google::protobuf::io::ArrayInputStream::Next(void const * *,int *)" (?Next@ArrayInputStream@io@protobuf@google@@UEAA_NPEAPEBXPEAH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual bool __cdecl google::protobuf::io::ArrayOutputStream::Next(void * *,int *)" (?Next@ArrayOutputStream@io@protobuf@google@@UEAA_NPEAPEAXPEAH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual bool __cdecl google::protobuf::io::CopyingInputStreamAdaptor::Next(void const * *,int *)" (?Next@CopyingInputStreamAdaptor@io@protobuf@google@@UEAA_NPEAPEBXPEAH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual bool __cdecl google::protobuf::io::CopyingOutputStreamAdaptor::Next(void * *,int *)" (?Next@CopyingOutputStreamAdaptor@io@protobuf@google@@UEAA_NPEAPEAXPEAH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual bool __cdecl google::protobuf::io::StringOutputStream::Next(void * *,int *)" (?Next@StringOutputStream@io@protobuf@google@@UEAA_NPEAPEAXPEAH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual bool __cdecl google::protobuf::io::ArrayInputStream::Skip(int)" (?Skip@ArrayInputStream@io@protobuf@google@@UEAA_NH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual int __cdecl google::protobuf::io::CopyingInputStream::Skip(int)" (?Skip@CopyingInputStream@io@protobuf@google@@UEAAHH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "public: virtual bool __cdecl google::protobuf::io::CopyingInputStreamAdaptor::Skip(int)" (?Skip@CopyingInputStreamAdaptor@io@protobuf@google@@UEAA_NH@Z) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(zero_copy_stream_impl_lite.obj) : error LNK2005: "private: bool __cdecl google::protobuf::io::CopyingOutputStreamAdaptor::WriteBuffer(void)" (?WriteBuffer@CopyingOutputStreamAdaptor@io@protobuf@google@@AEAA_NXZ) already defined in libprotobuf.lib(zero_copy_stream_impl_lite.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: __cdecl google::protobuf::internal::LogMessage::LogMessage(enum google::protobuf::LogLevel,char const *,int)" (??0LogMessage@internal@protobuf@google@@QEAA@W4LogLevel@23@PEBDH@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: __cdecl google::protobuf::LogSilencer::LogSilencer(void)" (??0LogSilencer@protobuf@google@@QEAA@XZ) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: virtual __cdecl google::protobuf::Closure::~Closure(void)" (??1Closure@protobuf@google@@UEAA@XZ) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: virtual __cdecl google::protobuf::internal::FunctionClosure0::~FunctionClosure0(void)" (??1FunctionClosure0@internal@protobuf@google@@UEAA@XZ) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: __cdecl google::protobuf::internal::LogMessage::~LogMessage(void)" (??1LogMessage@internal@protobuf@google@@QEAA@XZ) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: __cdecl google::protobuf::LogSilencer::~LogSilencer(void)" (??1LogSilencer@protobuf@google@@QEAA@XZ) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: void __cdecl google::protobuf::internal::LogFinisher::operator=(class google::protobuf::internal::LogMessage &)" (??4LogFinisher@internal@protobuf@google@@QEAAXAEAVLogMessage@123@@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(class google::protobuf::util::Status const &)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@AEBVStatus@util@23@@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(class google::protobuf::StringPiece const &)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@AEBVStringPiece@23@@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(class google::protobuf::uint128 const &)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@AEBVuint128@23@@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(char)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@D@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(int)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@H@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(unsigned int)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@I@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(long)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@J@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(unsigned long)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@K@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(double)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@N@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(void *)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@PEAX@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(char const *)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@PEBD@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(__int64)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@_J@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(unsigned __int64)" (??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@_K@Z) already defined in libprotobuf.lib(common.cc.obj)
webrtc.lib(common.obj) : error LNK2005: "void __cdecl google::protobuf::internal::DefaultLogHandler(enum google::protobuf::LogLevel,char const *,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?DefaultLogHandler@internal@protobuf@google@@YAXW4LogLevel@23@PEBDHAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) already defined in libprotobuf.lib(common.cc.obj)

Pouvres moutons! Si nous navions à nous défendre que du loup, nous saurions bien nous en garder. Mais qui nous gardera du berger? ― Romain Rolland