c ++ nanopb Protobuff без <iostream> - PullRequest
       20

c ++ nanopb Protobuff без <iostream>

0 голосов
/ 09 октября 2018

У меня есть спецификация 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

. В Интернете я вижу ссылки на такие функции, как ParseFromString и SerializeToString , однако я не могунайти эти функции в любом месте.

Как правильно сериализовать и сериализовать мое сообщение без iostreams?

1 Ответ

0 голосов
/ 10 октября 2018

Существует множество библиотек protobuf, которые отделены друг от друга.Обычно вы выбираете один из них и используете его:

Любая из них может использоваться для сериализации и анализа сообщений из буферов памяти.Кроме того, библиотека Google поддерживает iostreams C ++, в то время как nanopb поддерживает аналогичную потоковую систему, реализованную в C.

Ошибка «внешние символы не существует» предполагает, что вы не связываетесь с кодом библиотеки nanopb (pb_encode.c,pb_decode.c и pb_common.c).Как обычно, файлы .h содержат только объявление функции , в то время как вам нужно связать файлы .c, чтобы получить функцию Definition .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...