2016-03-02 2 views
5

В настоящее время я получаю сообщение об ошибке, который указывает мне на эти строки в файле заголовка создаваемого protoc:Protocol Buffer Ошибка при компиляции во время проверки GOOGLE_PROTOBUF_MIN_PROTOC_VERSION

#if 2006001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION 
#error This file was generated by an older version of protoc which is 
#error incompatible with your Protocol Buffer headers. Please 
#error regenerate this file with a newer version of protoc. 
#endif 

Но моя protoc версия соответствует одному выше:

protoc --version 
libprotoc 2.6.1 

Что я делаю неправильно?

Первоначально моя версия protoc была 3.0.0, а затем переустановлена, синхронизировавшись с 2.6.1 и выполняя шаги; make distclean, ./configure, make, make install, чтобы установить желаемую версию 2.6.1. Мне нужна была старая версия, так как она установлена ​​на наших серверах.

+1

Вы уверены, что ранее (с версией 3.0.0) созданные заголовки protobuf были удалены/обновлены? –

+0

Yup, я удалил эти 3.0.0 заголовки явно. Я также проверил файл, и проверка проверки для версии написана выше с сравнением версии 2006001. –

ответ

10

Проблема заключается в том, что установленные заголовки в вашей системе (в/usr/include/google/protobuf или/usr/local/include/google/protobuf) относятся к более новой версии протокольных буферов, чем ваш protoc. Возможно, у вас есть обе версии, установленные в разных местах, и используется неверный.

Но моя protoc версия соответствует выше один:

Да, потому что код был сгенерирован вашей protoc, и он знает свою собственную версию. Код спрашивает: «Является ли моя версия (2006001) меньшей, чем минимальная версия, которую требуются заявленные заголовки (GOOGLE_PROTOBUF_MIN_PROTOC_VERSION)?»

+0

Есть ли способ проверить, какая версия заголовков была установлена ​​в моей системе? Я попробовал посмотреть сами файлы и не могу найти подсказок о том, какая версия. –

+4

@the_qbf: Да, посмотрите на 'google/protobuf/stubs/common.h' и найдите макрос' GOOGLE_PROTOBUF_VERSION' около 100 строк. –

+1

Компетентный и полезный ответ помог мне разобраться, в чем была моя проблема. Спасибо, сэр! – Vivit

Смежные вопросы