UE5 LINK2005 error with Pixel Streaming plugin due to Protobuf and WebRTC

I’m on UE 5.0 branch building against c38b60efd5f56dbf6a17eb27164dcfc0a5f9221c.

In my project which doesn’t contain any other custom plugins, when I enable PixelStreaming plugin and try to package the project, I get the following error:

unreal error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl google::protobuf::StrCat(struct google::protobuf::strings::AlphaNum const &,struct google::protobuf::strings::AlphaNum const &,struct google::protobuf::strings::AlphaNum const &,struct google::protobuf::strings::AlphaNum const &,struct google::protobuf::strings::AlphaNum const &,struct google::protobuf::strings::AlphaNum const &,struct google::protobuf::strings::AlphaNum const &)" (?StrCat@protobuf@google@@YA?AV?$basic_string@DU?$char_t raits@D@std@@V?$allocator@D@2@@std@@AEBUAlphaNum@strings@12@000000@Z) already defined in webrtc.lib(strutil.obj)

If I disable the PixelStreaming plugin my project packages fine.

Has anyone else experienced similar issues? I did some googling and found this helpful article by @dawnarc: [UE4]error LNK2005 on linking libprotobuf which states that the above is caused by conflicts in libprotobuf versions. I’m having a hard time figuring out where the conflict lay and am wondering is there a conflict in the Engine libs themselves? Appreciate any pointers.

Confirmed the same happens with the out of box Pixel Streaming Demo using 5.0 branch.

More on the error stack:

UATHelper: Packaging (Windows): libprotobuf.lib(generated_message_reflection.cc.obj) : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __cdecl google::protobuf::internal::GetEmptyString(void)" (?GetEmptyString@internal@protobuf@google@@YAAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) already defined in webrtc.lib(generated_message_util.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(generated_message_reflection.cc.obj) : error LNK2005: "void __cdecl google::protobuf::internal::InitProtobufDefaults(void)" (?InitProtobufDefaults@internal@protobuf@google@@YAXXZ) already defined in webrtc.lib(generated_message_util.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(descriptor.cc.obj) : error LNK2005: "public: __cdecl google::protobuf::io::CodedOutputStream::CodedOutputStream(class google::protobuf::io::ZeroCopyOutputStream *)" (??0CodedOutputStream@io@protobuf@google@@QEAA@PEAVZeroCopyOutputStream@123@@Z) already defined in webrtc.lib(coded_stream.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(descriptor.cc.obj) : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __cdecl google::protobuf::internal::GetEmptyString(void)" (?GetEmptyString@internal@protobuf@google@@YAAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) already defined in webrtc.lib(generated_message_util.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(descriptor.cc.obj) : error LNK2005: "void __cdecl google::protobuf::internal::InitProtobufDefaults(void)" (?InitProtobufDefaults@internal@protobuf@google@@YAXXZ) already defined in webrtc.lib(generated_message_util.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(generated_message_util.cc.obj) : error LNK2005: "bool __cdecl google::protobuf::internal::IsNull<9>(void const *)" (??$IsNull@$08@internal@protobuf@google@@YA_NPEBX@Z) already defined in webrtc.lib(generated_message_util.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(generated_message_util.cc.obj) : error LNK2005: "bool __cdecl google::protobuf::internal::IsNull<10>(void const *)" (??$IsNull@$09@internal@protobuf@google@@YA_NPEBX@Z) already defined in webrtc.lib(generated_message_util.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(generated_message_util.cc.obj) : error LNK2005: "bool __cdecl google::protobuf::internal::IsNull<11>(void const *)" (??

...


UATHelper: Packaging (Windows): libprotobuf.lib(extension_set.cc.obj) : error LNK2005: "public: void __cdecl google::protobuf::internal::ExtensionSet::SwapExtension(class google::protobuf::internal::ExtensionSet *,int)" (?SwapExtension@ExtensionSet@internal@protobuf@google@@QEAAXPEAV1234@H@Z) already defined in webrtc.lib(extension_set.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(extension_set.cc.obj) : error LNK2005: "public: class google::protobuf::MessageLite * __cdecl google::protobuf::internal::ExtensionSet::UnsafeArenaReleaseMessage(int,class google::protobuf::MessageLite const &)" (?UnsafeArenaReleaseMessage@ExtensionSet@internal@protobuf@google@@QEAAPEAVMessageLite@34@HAEBV534@@Z) already defined in webrtc.lib(extension_set.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(extension_set.cc.obj) : error LNK2005: "public: void __cdecl google::protobuf::internal::ExtensionSet::UnsafeArenaSetAllocatedMessage(int,unsigned char,class google::protobuf::FieldDescriptor const *,class google::protobuf::MessageLite *)" (?UnsafeArenaSetAllocatedMessage@ExtensionSet@internal@protobuf@google@@QEAAXHEPEBVFieldDescriptor@34@PEAVMessageLite@34@@Z) already defined in webrtc.lib(extension_set.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(extension_set.cc.obj) : error LNK2005: "private: virtual void __cdecl google::protobuf::internal::ExtensionSet::LazyMessageExtension::UnusedKeyMethod(void)" (?UnusedKeyMethod@LazyMessageExtension@ExtensionSet@internal@protobuf@google@@EEAAXXZ) already defined in webrtc.lib(extension_set.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(extension_set.cc.obj) : error LNK2005: "private: static class google::protobuf::internal::RepeatedPrimitiveDefaults const * __cdecl google::protobuf::internal::RepeatedPrimitiveDefaults::default_instance(void)" (?default_instance@RepeatedPrimitiveDefaults@internal@protobuf@google@@CAPEBV1234@XZ) already defined in webrtc.lib(extension_set.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl google::protobuf::MessageLite::DebugString(void)const " (?DebugString@MessageLite@protobuf@google@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "private: void __cdecl google::protobuf::MessageLite::LogInitializationErrorMessage(void)const " (?LogInitializationErrorMessage@MessageLite@protobuf@google@@AEBAXXZ) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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_trai
ts@D@std@@V?$allocator@D@2@@std@@PEAV56@@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::MergeFromBoundedZeroCopyStream(class google::protobuf::io::ZeroCopyInputStream *,int)" (?MergeFromBoundedZeroCopyStream@MessageLite@protobuf@google@@QEAA_NPEAVZeroCopyInputStream@io@23@H@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::MergeFromString(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?MergeFromString@MessageLite@protobuf@google@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::MergePartialFromBoundedZeroCopyStream(class google::protobuf::io::ZeroCopyInputStream *,int)" (?MergePartialFromBoundedZeroCopyStream@MessageLite@protobuf@google@@QEAA_NPEAVZeroCopyInputStream@io@23@H@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "void __cdecl google::protobuf::internal::OnShutdown(void (__cdecl*)(void))" (?OnShutdown@internal@protobuf@google@@YAXP6AXXZ@Z) already defined in webrtc.lib(common.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "void __cdecl google::protobuf::internal::OnShutdownRun(void (__cdecl*)(void const *),void const *)" (?OnShutdownRun@internal@protobuf@google@@YAXP6AXPEBX@Z0@Z) already defined in webrtc.lib(common.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParseFromArray(void const *,int)" (?ParseFromArray@MessageLite@protobuf@google@@QEAA_NPEBXH@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParseFromFileDescriptor(int)" (?ParseFromFileDescriptor@MessageLite@protobuf@google@@QEAA_NH@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParseFromIstream(class std::basic_istream<char,struct std::char_traits<char> > *)" (?ParseFromIstream@MessageLite@protobuf@google@@QEAA_NPEAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParsePartialFromArray(void const *,int)" (?ParsePartialFromArray@MessageLite@protobuf@google@@QEAA_NPEBXH@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParsePartialFromFileDescriptor(int)" (?ParsePartialFromFileDescriptor@MessageLite@protobuf@google@@QEAA_NH@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::ParsePartialFromIstream(class std::basic_istream<char,struct std::char_traits<char> > *)" (?ParsePartialFromIstream@MessageLite@protobuf@google@@QEAA_NPEAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializePartialToArray(void *,int)const " (?SerializePartialToArray@MessageLite@protobuf@google@@QEBA_NPEAXH@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializePartialToFileDescriptor(int)const " (?SerializePartialToFileDescriptor@MessageLite@protobuf@google@@QEBA_NH@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializePartialToOstream(class std::basic_ostream<char,struct std::char_traits<char> > *)const " (?SerializePartialToOstream@MessageLite@protobuf@google@@QEBA_NPEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializeToArray(void *,int)const " (?SerializeToArray@MessageLite@protobuf@google@@QEBA_NPEAXH@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializeToFileDescriptor(int)const " (?SerializeToFileDescriptor@MessageLite@protobuf@google@@QEBA_NH@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "public: bool __cdecl google::protobuf::MessageLite::SerializeToOstream(class std::basic_ostream<char,struct std::char_traits<char> > *)const " (?SerializeToOstream@MessageLite@protobuf@google@@QEBA_NPEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z) already defined in webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.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 webrtc.lib(message_lite.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(message_lite.cc.obj) : error LNK2005: "void __cdecl google::protobuf::ShutdownProtobufLibrary(void)" (?ShutdownProtobufLibrary@protobuf@google@@YAXXZ) already defined in webrtc.lib(common.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(any.cc.obj) : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __cdecl google::protobuf::internal::GetEmptyString(void)" (?GetEmptyString@internal@protobuf@google@@YAAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) already defined in webrtc.lib(generated_message_util.obj)
UATHelper: Packaging (Windows): libprotobuf.lib(any.cc.obj) : error LNK2005: "void __cdecl google::protobuf::internal::InitProtobufDefaults(void)" (?InitProtobufDefaults@internal@protobuf@google@@YAXXZ) already defined in webrtc.lib(generated_message_util.obj)
UATHelper: Packaging (Windows):    Creating library D:\GameDev\PixelStreamingDemo\Binaries\Win64\PixelStreamingDemo-Win64-Shipping.lib and object D:\GameDev\PixelStreamingDemo\Binaries\Win64\PixelStreamingDemo-Win64-Shipping.exp
UATHelper: Packaging (Windows): D:\GameDev\PixelStreamingDemo\Binaries\Win64\PixelStreamingDemo-Win64-Shipping.exe : fatal error LNK1169: one or more multiply defined symbols found
UATHelper: Packaging (Windows): Took 1579.6862475s to run UnrealBuildTool.exe, ExitCode=6
UATHelper: Packaging (Windows): UnrealBuildTool failed. See log for more details. (D:\GameDev\github.com\utopia-space\UnrealEngine\Engine\Programs\AutomationTool\Saved\Logs\UBT-PixelStreamingDemo-Win64-Shipping_2.txt)
UATHelper: Packaging (Windows): AutomationTool executed for 0h 31m 6s
UATHelper: Packaging (Windows): AutomationTool exiting with ExitCode=6 (6)
UATHelper: Packaging (Windows): BUILD FAILED

Managed to work around this issue by remove a Neural Network Inference plugin v0.1.0-alpha. It was enabled by default out of the 5.0 branch and was the culprit causing the LINK2005 issue with protobuf. Either this plugin should not be enabled by default or it should be updated to use the correct libprotobuf version as Pixel Streaming plugin which is in v1.0

Raised support case Case # 00395906: Unreal Engine 5.0 branch Neural Neural Inference Plugin v0.1.0-alpha causes “LINK2005 error libprotobuf.lib already defined in webrtc.lib” with Pixel Streaming plugin v1.0

Unfortunately the Neural Network Interface plugin is required for Metahumans plugin :frowning: