没有 <iostream> 的 c++ nanopb Protobuff
c++ nanopb Protobuff without <iostream>
我有一个 protoBuff3 规范,看起来像
message MSG {
string name = 1;
repeated string data = 2;
}
以及设置 "MSG.data max_count:20"
的选项文件
我正在尝试不使用 .
我目前正在使用 pb_ostream_from_buffer 和 pb_encode 但是我在尝试 link我收到一个错误提示 pb_ostream_..., pb_encode, pb_decode,... 外部符号不存在。我能够找到 pb_encode.h 和 pb_decode.h
中定义的这些函数
.在网上我看到了对函数的引用
ParseFromString 和 SerializeToString,但是我在任何地方都找不到这些函数。
在没有 iostream 的情况下序列化和序列化我的消息的正确方法是什么?
有许多相互独立的protobuf库。通常你会选择一个并使用它:
- nanopb:有
pb_ostream_from_buffer
和pb_encode
等函数。
- Google's protobuf C++ library:有
ParseFromString
和SerializeToString
等函数。
其中任何一个都可用于序列化和解析来自内存缓冲区的消息。此外 Google 的库支持 C++ iostreams,而 nanopb 支持用 C 实现的类似流系统。
有关 "external symbols do not exist" 的错误表明您没有 link 反对 nanopb 库代码(pb_encode.c
、pb_decode.c
和 pb_common.c
)。像往常一样,.h
文件只包含函数 声明,而您需要 link 针对 .c
文件提供函数 定义.
我有一个 protoBuff3 规范,看起来像
message MSG {
string name = 1;
repeated string data = 2;
}
以及设置 "MSG.data max_count:20"
的选项文件我正在尝试不使用 .
我目前正在使用 pb_ostream_from_buffer 和 pb_encode 但是我在尝试 link我收到一个错误提示 pb_ostream_..., pb_encode, pb_decode,... 外部符号不存在。我能够找到 pb_encode.h 和 pb_decode.h
中定义的这些函数.在网上我看到了对函数的引用 ParseFromString 和 SerializeToString,但是我在任何地方都找不到这些函数。
在没有 iostream 的情况下序列化和序列化我的消息的正确方法是什么?
有许多相互独立的protobuf库。通常你会选择一个并使用它:
- nanopb:有
pb_ostream_from_buffer
和pb_encode
等函数。 - Google's protobuf C++ library:有
ParseFromString
和SerializeToString
等函数。
其中任何一个都可用于序列化和解析来自内存缓冲区的消息。此外 Google 的库支持 C++ iostreams,而 nanopb 支持用 C 实现的类似流系统。
有关 "external symbols do not exist" 的错误表明您没有 link 反对 nanopb 库代码(pb_encode.c
、pb_decode.c
和 pb_common.c
)。像往常一样,.h
文件只包含函数 声明,而您需要 link 针对 .c
文件提供函数 定义.