Каков обычный и правильный способ использования Protobuf в проекте VС++ в Windows?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Каков обычный и правильный способ использования Protobuf в проекте VС++ в Windows?

Сообщение Anonymous »

Я новичок в C++ и пишу простую программу, которая в своей работе использует определения protobuf (.proto). Я пришел из C#, и у меня было много проблем с пониманием того, как использовать protobuf в моем проекте VС++. Пожалуйста, извините за длинный и подробный пост, я потратил несколько часов, пытаясь заставить это работать, но безрезультатно.
Следуя онлайн-руководству, я заставил VS автоматически анализировать и генерировать файлы H/CPP. из файлов PROTO только с protoc.exe. Подсветка синтаксиса даже работает и дает мне приятные цвета в IDE. Ура!
Изображение

Код: Выделить всё

"$(ProjectDir)../dependencies/protobuf/bin/protoc.exe" --proto_path=$(ProjectDir) --cpp_out=$(ProjectDir) %(FullPath)
Однако сгенерированные файлы заголовков имеют множество зависимостей от других заголовочных файлов и файлов inc, которые, как я ожидал, мне не понадобятся (я думал, что могу просто использовать protoc.exe и это он будет генерировать автономные заголовочные файлы)

Код: Выделить всё

#include "google/protobuf/port_undef.inc"
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
...
Я добавил всю версию Protobuf (загруженную с их страницы github, как указано в их инструкциях) в красивую папку /dependents и добавил ее как часть моих «дополнительных каталогов включения». Теперь мои сгенерированные файлы могут найти свои зависимости... но затем я снова упираюсь в стену.
Исходные файлы Protobuf содержат заголовок, который, насколько я могу судить, нигде не найден. в выпуске protobuf. У меня его просто нет!

Код: Выделить всё

#include "absl/strings/string_view.h" // < !!!
Поэтому я взломал еще одну вещь поверх этой штуки, загрузив google/absl и поместив ее в зависимости, а также в дополнительные включения;
Теперь я могу скомпилировать, но не могу ссылку, потому что мне не хватает protobuf.lib, который, как я думал, где-то будет частью релиза.... но это не так.
У меня не было намерения компилировать protobuf самостоятельно, я доверяю разработчикам и просто хотел использовать двоичный. Даже если бы я захотел создать его самостоятельно, шаги, которые я выполнил, кажутся слишком запутанными, и я не уверен, что мне следует делать.
Перед взломом помимо всего этого, еще одна вещь, чтобы заставить это работать. Я подумал, что мне лучше спросить здесь, чтобы убедиться, что я делаю это обычным, запланированным способом - Да, я прочитал README protobuf как а также их веб-сайт, который не руководство по установке и в любом случае перенаправляет на файл readme на github. У меня VCPKG не работал.
  • Была ли эта отсутствующая зависимость нормальной и нужно ли было исправлять ее вручную я сам нашел его в Интернете, как я это сделал, или он должен был быть включен/найден где-то еще/часть чего-то еще, что я пропустил?
  • Это обычный способ установки и использования Protobuf или это должен быть автоматизированный способ, который в основном подойдет для установки Windows VC++, а я усложнил себе жизнь больше, чем необходимо?
Заранее извините, если это наивные вопросы, я пытаюсь узнать, как правильно установить protobuf в проекте C++, и натыкаюсь на много противоречивой или неполной информации.>

Подробнее здесь: https://stackoverflow.com/questions/772 ... on-windows
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»