C++ nanopb Protobuff без <iostream>

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

Решение

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

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

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

Другие вопросы по тегам