草庐IT

protobuf-3

全部标签

go - 为 protobuf 扩展指定 JSON 名称

我已将扩展消息添加到消息中,需要将其编码为json。但是,扩展消息的字段名称是[message.extension_message_name]。我希望它只被命名为extension_message_name,没有大括号和前缀,因为这个扩展消息存在于我们API的其他地方,而且这个奇怪的名字会增加混淆。据我所知,负责的代码在protobuf/jsonpb中,其中JSONName设置为fmt.Sprintf("[%s]",desc.Name并且似乎无法覆盖。有人对此有解决方法吗? 最佳答案 根据languageguide:Messagef

c++ - 如何在 Linux 中使用 Google Protobufs 确保相同的输出文件 (*.o)

我所在的行业需要在应用程序准备好部署时进行可重复的构建过程。我最近继承了一个应用程序,该应用程序到目前为止一直在开发中。此应用程序在linux平台上运行并使用GoogleProtocolBuffers(版本2.4.1)。不幸的是,构建过程不可重复,但我在应用程序中挑出从ProtocolBuffer文件生成的输出文件作为唯一性来源(使用md5sum)。除了几行之外,.o文件大部分相同。我使用随protobuf版本分发的地址簿示例重复了该过程。下面列出了.o文件中的差异。每次生成.o文件时,“878197C9XX”编号都会改变。我想要一个可重复的过程,以便它们始终相同。_GLOBAL__I

c++ - C++ 中 protobuf 消息的长度前缀

我正在使用protobuf序列化我通过C++中的套接字连接发送的消息。对于通信,我想在消息中添加一个header,指示消息的长度。你怎么看这个实现?我做了一些研究,这就是我总结的结果。有没有更好的方法来做到这一点?这个实现会引起任何麻烦吗?我知道有对Java的API支持,但不幸的是不支持C++。boolsend_message(intsocket,my_protobuf::Messagemessage){google::protobuf::uint32message_length=message.ByteSize();intprefix_length=sizeof(message_le

c++ - Qt + protobuf,类型?

我想深入了解Google在Qt开发中的ProtocolBuffer,但我无法弄清楚如何最好地整合它们。最终,我想使用ProtocolBuffer发送QUdpSocket和QTcpSocket。在ProtocolBuffermessage到通过套接字(QByteArray)发送数据然后在另一端再次返回之间的最佳方法是什么? 最佳答案 从protobuf对象创建QByteArray:Personperson;//aprotobufobjectperson.set_id(123);person.set_name("Bob");person

c++ protobuf : how to iterate through fields of message?

我是protobuf的新手,但我的任务很简单:我需要遍历消息字段并检查它的类型。如果类型是消息,我将递归地对此消息执行相同的操作。例如,我有这样的消息:packageMyTool;messageConfiguration{requiredGloablSettingsglobalSettings=1;optionalstringoption1=2;optionalint32option2=3;optionalbooloption3=4;}messageGloablSettings{requiredbooloption1=1;requiredbooloption2=2;requiredbo

c++ - 哪个protobuf优化?

使用谷歌的c++ProtocolBuffer编译器不清楚哪个更快:优化速度:optionoptimize_for=SPEED;或针对轻型运行时进行优化:optionoptimize_for=LITE_RUNTIME;如果速度更快,是什么让它更快?有没有人有关于这个主题的硬数据? 最佳答案 我阅读documentation的方式,优化CODE_SIZE不会为所有内容生成快速访问器方法,而是依赖于慢反射,优化SPEED将为您提供快速访问器并针对LITE_RUNTIME进行优化也会为您提供快速访问器,但不支持protobuf的全部功能,仅

C++ Protobuf 到/从 JSON 转换

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的非现场资源的问题对于StackOverflow来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describetheproblem以及到目前为止为解决这个问题所做的工作。关闭8年前。Improvethisquestion是否有人熟悉将protobuf消息转换为JSON或从JSON转换的稳定C++解决方案(库、代码片段等)? 最佳答案 这个更好IMO:https://github.com/shr

c++ - 如何删除重复字段中的任意对象? (protobuf)

我在原型(prototype)的重复字段中有一些条目。现在我想删除其中的一些。我怎样才能做到这一点?有删除最后一个元素的功能,但我想删除任意元素。我不能只是交换它们,因为顺序很重要。我可以与next交换直到结束,但没有更好的解决方案吗? 最佳答案 对于Protobufv3iteratorRepeatedField::erase(const_iteratorposition)可以在任意位置删除。对于Protobufv2您可以使用DeleteSubrange(intstart,intnum)在RepeatedPtrField类中。如果要

c++ - 对 google::protobuf::internal::empty_string_[abi:cxx11] 的 undefined reference

我正在尝试使用ProtocolBuffers2.6.1和GNUGCC5.1.0(在Ubuntu14.10上)构建简单的测试应用程序,但出现以下错误:/home/ragnar/cpp-tools/gcc-linux/bin/g++-c"/home/ragnar/cpp-projects/gprotobuf_test/main.cpp"-g-O0-Wall-o./Debug/main.cpp.o-I.-I/home/ragnar/cpp-tools/libs/linux64/protobuf/include-I./home/ragnar/cpp-tools/gcc-linux/bin/g+

c++ - 比较两个 google::protobuf::Message 对象的最简单方法是什么?

我想比较两个任意google::protobuf::Message对象。我假设对象是相等的它们的描述包含具有相同字段编号和对应字段类型的字段。它们的反射具有相同的字段集(以及相同数量的重复字段)和相等的对应字段值。我知道,我可以自己编写这样的比较函数,但可能已经有一些简单或预定义的解决方案?另外,我可能遗漏了一些关于此类对象不可比性的主要问题-我想知道是不是这样。 最佳答案 您可以使用google::protobuf::util::MessageDifferencer为了这。看看myanswerhere.