Comments 5
На мой взгляд в 22 году пора начинать использовать пакетные менеджеры для с++. Например vcpkg, по настроению можно взять конан или любую альтернативу.
последовательность бит из ключей и значений
На самом деле в сериализованном представлении ключи выкинуты (остались значения), так как считается, что контрагент знает про тот же .proto файл и может с его помощью расшифровать бинарный поток. Без .proto файла бинарный поток понять человеку/программе невозможно, читабельны только string-поля.
Хорошо, а почему если я сериализую данные и их куда-то записываю появляется ключ, или вы о другом?
Да, не зная структуры сообщения расшифровать корректно не выйдет т.к для того же знакового и беззнакового инта один и тот же wire type. Более того, можно и десериализовать одно сообщение в другое.
Чудесно, что так в тему поднялась тема протобафа. Может быть гуру подскажут куда копать.
Есть библиотека, которая по файлу my.proto генерирует pb.cc и pb.h, и она чудесно пишет пакеты в базу.
Есть вторая библиотека, которая по файлу my.proto генерирует pb.cc и pb.h, и она чудесно читает пакеты из базы.
Файл my.proto общий (разделяемый) между проектами этих библиотек.
А теперь обе эти библиотеки подгружаются в одном приложении и получаем ошибку, что такой тип сообщения уже используется.
Невозможно (по архитектуре) централизовать в одно место регистрацию типа. Может быть загружена как одна, так другая, так и обе библиотеки. Костыль в виде копипаста proto с другим именем пакета не желателен.
Наверняка есть способ решить такую задачу. Отправьте, пожалуйста в нужном направлении.
Разбор Protobuf в Visual Studio под С++