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, но мне нужна библиотека, не так ли?
У вас должна быть консоль 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, но не является родным.)
Вы не будете работать с .lib
файл при использовании набора инструментов MinGW. Вместо этого вы можете ссылаться на DLL напрямую. MinGW Wiki объясняет это.
Я мог бы получить dll и lib оба. Это когда вам не нужен статический файл lib и вы хотите использовать dll и файл lib.
Вам необходимо внести следующие изменения в код Protobuf:
В настройках проекта libProtoBuf, в препроцессоре C / C ++ добавьте следующие флаги.
PROTOBUF_USE_DLLS; LIBPROTOBUF_EXPORTS;
Эти флаги будут экспортировать информацию из profobuf, используя dllexport
в коде клиента, где вы используете Protobuf, определите: PROTOBUF_USE_DLLS. Который сделает protobuf включающим использование dllimport.
Выполнив шаг 2, вы увидите как dll, так и lib в вашей выходной папке. В противном случае вы всегда будете видеть только dll, а не файл lib.
Надеюсь это поможет. Если нет, пожалуйста, напишите здесь сообщение, и я могу помочь вам разобраться с этим.