сериализация — c ++ nanopb Protobuff без & lt; iostream & gt;

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

0

Решение

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]