没有<iostream>的c ++ nanopb Protobuff

时间:2018-10-09 20:45:46

标签: c++ serialization google-protocol-buffer nanopb

我有一个protoBuff3规范,看起来像

message MSG {
   string name = 1;
   repeated string data = 2;
}

还有一个设置“ MSG.data max_count:20”的选项文件

我正在尝试不使用来编码和解码原型。

我当前正在使用 pb_ostream_from_buffer pb_encode ,但是在尝试链接时出现错误,提示pb_ostream _...,pb_encode,pb_decode等外部符号不存在。我可以找到在pb_encode.h和pb_decode.h

中定义的这些函数。

.online我看到了对类似函数的引用 ParseFromString SerializeToString ,但是我在任何地方都找不到这些函数。

在没有iostream的情况下对消息进行序列化和序列化的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

有许多彼此分离的protobuf库。通常,您会选择一个并使用它:

这两个都可以用于序列化和解析来自内存缓冲区的消息。此外,Google的库支持C ++ iostream,而nanopb支持用C实现的类似流系统。

关于“外部符号不存在”的错误表明您未针对nanopb库代码(pb_encode.cpb_decode.cpb_common.c)进行链接。与往常一样,.h文件仅包含函数声明,而您需要链接到.c文件以提供函数定义