2016-03-02 15 views
5

Attualmente sto ricevendo un errore che mi indica queste righe nel file di intestazione prodotta da ProtoC:errore di protocollo Buffer sulla compilazione durante il check 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 

ma la mia versione ProtoC corrisponde a quello di cui sopra:

protoc --version 
libprotoc 2.6.1 

Cosa sto sbagliando?

Originariamente la mia versione di protoc era 3.0.0, quindi reinstallata tornando alla 2.6.1 e seguendo i passaggi; make distclean, ./configure, make, make install per installare la versione 2.6.1 desiderata. Avevo bisogno della versione precedente poiché è quella installata nei nostri server.

+1

Sei sicuro che le precedenti intestazioni protobuf (con versione 3.0.0) sono state rimosse/aggiornate? –

+0

Sì, ho cancellato quelle intestazioni 3.0.0 in modo esplicito. Ho anche controllato il file e la convalida del controllo per la versione è come sopra scritto con il confronto della versione 2006001 –

risposta

10

Il problema è che le intestazioni installate sul sistema (in/usr/include/google/protobuf o/usr/local/include/google/protobuf) provengono da una versione più recente di buffer di protocollo rispetto a protoc. Potrebbe essere il caso in cui entrambe le versioni siano installate in posizioni diverse e quella errata sia in uso.

Ma la mia versione ProtoC corrisponde a quello di cui sopra:

Sì, perché il codice è stato generato dal vostro protoc, e sa la propria versione. Il codice chiede: "La mia versione (2006001) è inferiore alla versione minima richiesta dalle intestazioni installate (GOOGLE_PROTOBUF_MIN_PROTOC_VERSION)?"

+0

C'è un modo per verificare quale versione delle intestazioni sono state installate nel mio sistema? Ho provato a guardare i file stessi e non riesco a trovare alcun suggerimento su quale versione sia. –

+4

@the_qbf: Sì, guarda 'google/protobuf/stubs/common.h' e cerca la macro' GOOGLE_PROTOBUF_VERSION' di circa 100 righe. –

+1

Risposta competente e utile, mi ha aiutato a capire qual era il mio problema. Grazie Signore! – Vivit