- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从我通常使用的原型(prototype)类创建了一个 ProtocolBuffer 对象,我需要将它序列化。现在,我获取该对象并对其调用 SerializeToArray(),如下所示:
int size = messageObject.ByteSize();
void* buffer = malloc(size);
messageObject.SerializeToArray(buffer, size);
据我所知这没有问题,因为对象中有数据(我通过在 Serialize 行之前中断来检查它)。
然而,当该方法调用时,它会触发一个我一无所知的 abort() 。我不知道它可能是什么。该对象中包含的唯一数据是一个“类型”枚举器(我可以将其设置为该对象中使用的数据类型,因为它可以包含不同种类的消息)并且它包含一个可重复的消息对象类型。
message MessageID
{
enum Type { LOGINDATA = 1; PLAYERDATA = 2; WORLDDATA = 3; }
// Identifies which field is filled in.
required Type type = 1;
// One of the following will be filled in.
repeated PlayerData playerData = 2;
optional WorldData worldData = 3;
optional LoginData loginData = 10;
}
这是基本信息。因此,在这种情况下,Type 是 2,代表 PLAYERDATA。此外,playerData 是使用 PlayerData 类型的单个对象设置的。
感谢您的帮助。
最佳答案
任何时候 protobuf 库中止(同样,它应该只处于 Debug模式或在严重情况下),它会将有关问题的信息打印到控制台。如果您的应用没有控制台,您可以使用 google::protobuf::SetLogHandler
将信息定向到其他地方:
typedef void LogHandler(LogLevel level, const char* filename,
int line, const std::string& message);
LogHandler* SetLogHandler(LogHandler* new_func);The protobuf library sometimes writes warning and error messages to stderr.
These messages are primarily useful for developers, but may also help end users figure out a problem. If you would prefer that these messages be sent somewhere other than stderr, call SetLogHandler() to set your own handler. This returns the old handler. Set the handler to NULL to ignore log messages (but see also LogSilencer, below).
Obviously, SetLogHandler is not thread-safe. You should only call it at initialization time, and probably not from library code. If you simply want to suppress log messages temporarily (e.g. because you have some code that tends to trigger them frequently and you know the warnings are not important to you), use the LogSilencer class below.
据我所知(仅适用于调试版本)的唯一中止原因是未设置某些必填字段。你说 type
字段已设置,那么 PlayerData
中必须有一个未设置的必填字段。
关于c++ - ProtocolBuffer,SerializeToArray() 上的 abort(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24894617/
我正在尝试在 visual studio 2015 中调试 app_engine 项目。到目前为止,我有这些行: 我安装了 pip:端点、protopc、appengine 和 google-api-
我有一个 OrderList 类型的 protobuf 消息 message OrderList { repeated Order orders = 1; } 我想将这个订单列表传递到我编写的自定
我正在尝试使用 Google 的 ProtocolBuffer 在服务器/客户端架构中发送/接收数据。我能够将两者与 winsock 连接起来,并且能够使用它从 ProtocolBuffer 发送和接
我想知道如何检索从字节加载的 protobuf 的类型。 例如: Worklist work = Worklist.newBuilder().build(); byte[] msg = work.to
是否可以以 ProtocolBuffer 格式在 BigQuery 中导入数据?我已经有一个(非常)大的数据集采用这种格式,现在我想将它们推送到 BigQuery。但如果我能避免翻译成 json 左右
嗨,我是一名中国 iOS 工程师。 我正在尝试在 iPhone 上运行 Protocol Buffer ,我下载了 metasyntactic project来自谷歌代码,并按照您的介绍进行操作。 但
我最近升级了我的代码库(Java、C++ 和 C#)以使用 proto3。就 C# 而言,这涉及对代码的 2000 多次更改。这主要是语义上的,而且一切都很好,但有一个问题我似乎无法理解;序列化/反序
我从我通常使用的原型(prototype)类创建了一个 ProtocolBuffer 对象,我需要将它序列化。现在,我获取该对象并对其调用 SerializeToArray(),如下所示: int s
从事宠物项目(cassandra、spark、hadoop、kafka)我需要一个数据序列化框架。查看常见的三个框架 - 即 Thrift、Avro 和 Protocolbuffers - 我注意到它
我们最近才在 out 平台中采用 ProtocolBuffers,并且我在 v3 中看到了 FieldMasks 的引入,但我们似乎无法弄清楚如何使用它们。 我们已经使用 v3 编译器生成了我们的 p
我正在编写一个程序,该程序应该通过 ZeroMQ 发送 C 结构。因此,我使用 Google 的 ProtocolBuffers 来序列化结构。 我现在遇到的问题是我的订户端没有收到任何内容。发布者打
我有这段代码,它在升级 GAE Python NDB 之前可以工作: class MyHandler(webapp2.RequestHandler): def get(self,urlString
我使用 protobuf-net 序列化了数据,并且能够在 C# 中进行相同的处理。 放置一个 C# 虚拟 w# var file = File.Create("animal.bin"); //Cre
我开始将自定义序列化机制迁移到 Protocol Buffer 。一种特别经常使用的数据类型是 BigDecimal。 有谁知道在 Protocol Buffer 中序列化它的好方法吗?我们当前的序列
我是一名优秀的程序员,十分优秀!