Как установить protobuf на Windows? (Win7x64 / MinGW)

C ++ — Protobuf не компилируется в VS2012. Теперь я хочу использовать MinGW для компиляции на Windows. Может кто-нибудь, пожалуйста, дайте мне краткое описание того, как скомпилировать protobuf на Win7 x64. Я уже установил MinGW с установщиком графического интерфейса. Google пишет как уведомление об установке MinGW, что я должен обратиться к примечаниям по установке Unix. Но я не могу понять, как использовать автоматические инструменты на окнах.

редактировать

Хорошо, это то, что я сделал до сих пор:

$ mount C:/ WinDir
$ cd ./[...]/protobuf.2.4.1
$ ./configure
$ minGW32-make.exe
$ minGW32-make.exe check

minGW32-make.exe запускается без ошибок, но тесты не выполняются, и я не могу найти libprotobuf.lib. Есть некоторые libprotobuf.dll, но мне нужна библиотека, не так ли?

3

Решение

У вас должна быть консоль MSys вместе с вашей установкой MinGW. Эта консоль предоставляет Linux-подобную среду, в которой вы сможете нормально использовать автоинструменты.

Если MSys не установлен, вы также можете загрузить его с сайта MinGW.

cd в свой каталог с исходниками и попробуйте обычные:

$ ./configure
$ make

Некоторые библиотеки вызывают проблемы в Windows, но большинство хорошо компилируется с MinGW и MSys. Вернитесь и добавьте больше информации к своему вопросу, если столкнетесь с конкретными проблемами.


Редактировать:

minGW32-make.exe запускается без ошибок, но тесты не выполняются, и я не могу найти libprotobuf.lib. Есть некоторые libprotobuf.dll, но мне нужна библиотека, не так ли?

Обычно для динамической библиотеки вы получите protobuf.dll (динамическая библиотека) и libprotobuf.a (библиотека статических оболочек).

При ссылке просто пройдите -lprotobuf компоновщику — он будет искать оба libprotobuf.a а также protobuf.lib,

(.lib это другой формат статической библиотеки, который частично обрабатывается MinGW, но не является родным.)

2

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

Вы не будете работать с .lib файл при использовании набора инструментов MinGW. Вместо этого вы можете ссылаться на DLL напрямую. MinGW Wiki объясняет это.

1

Я мог бы получить dll и lib оба. Это когда вам не нужен статический файл lib и вы хотите использовать dll и файл lib.
Вам необходимо внести следующие изменения в код Protobuf:

  1. Откройте проект в VS. Или любой другой редактор. Я использую VS2015.
  2. В настройках проекта libProtoBuf, в препроцессоре C / C ++ добавьте следующие флаги.
    PROTOBUF_USE_DLLS; LIBPROTOBUF_EXPORTS;
    Эти флаги будут экспортировать информацию из profobuf, используя dllexport

  3. в коде клиента, где вы используете Protobuf, определите: PROTOBUF_USE_DLLS. Который сделает protobuf включающим использование dllimport.

Выполнив шаг 2, вы увидите как dll, так и lib в вашей выходной папке. В противном случае вы всегда будете видеть только dll, а не файл lib.

Надеюсь это поможет. Если нет, пожалуйста, напишите здесь сообщение, и я могу помочь вам разобраться с этим.

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