Thanks. No, I have not installed any other version of protoc. But I have installed not in my '/usr/etc' directory, I instead in /meda/EXTDIV/bin', I am not sure if that is a problem. And I am using ubuntu 9.10 which has gcc 4.4.
On Wed, Feb 3, 2010 at 10:35 AM, Kenton Varda <ken...@google.com> wrote: > Did you previously compile the examples with an older protoc? You need to > "make clean" before trying to compile with a newer protoc. > > On Wed, Feb 3, 2010 at 9:18 AM, hap 497 <hap...@gmail.com> wrote: >> >> Kenton, >> >> Thank you. >> >> It prints 'libprotoc 2.3.0'. And I have setup my LD_LIBRARY_PATH, >> PATH, PKG_CONFIG_PATH on my ubuntu env accordingly. >> >> $ protoc --version >> libprotoc 2.3.0 >> /media/EXTDIV/src/protobuf-2.3.0/examples:1014:14$ make cpp >> pkg-config --cflags protobuf # fails if protobuf is not installed >> -pthread -I/media/EXTDIV/bin/include >> c++ add_person.cc addressbook.pb.cc -o add_person_cpp `pkg-config >> --cflags --libs protobuf` >> In file included from add_person.cc:6: >> addressbook.pb.h:16:2: error: #error This file was generated by an >> older version of protoc which is >> addressbook.pb.h:17:2: error: #error incompatible with your Protocol >> Buffer headers. Please >> addressbook.pb.h:18:2: error: #error regenerate this file with a newer >> version of protoc. >> add_person.cc: In function ‘int main(int, char**)’: >> add_person.cc:66: error: cannot declare variable ‘address_book’ to be >> of abstract type ‘tutorial::AddressBook’ >> addressbook.pb.h:246: note: because the following virtual functions >> are pure within ‘tutorial::AddressBook’: >> /media/EXTDIV/bin/include/google/protobuf/message.h:331: note: >> virtual google::protobuf::Metadata >> google::protobuf::Message::GetMetadata() const >> In file included from >> /media/EXTDIV/bin/include/google/protobuf/unknown_field_set.h:43, >> from >> >> /media/EXTDIV/bin/include/google/protobuf/generated_message_reflection.h:44, >> from addressbook.pb.h:21, >> from add_person.cc:6: >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h: In static >> member function ‘static GenericType* >> google::protobuf::internal::GenericTypeHandler<GenericType>::New() >> [with GenericType = tutorial::Person_PhoneNumber]’: >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h:655: >> instantiated from ‘typename TypeHandler::Type* >> google::protobuf::internal::RepeatedPtrFieldBase::Add() [with >> TypeHandler = >> google::protobuf::RepeatedPtrField<tutorial::Person_PhoneNumber>::TypeHandler]’ >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h:829: >> instantiated from ‘Element* >> google::protobuf::RepeatedPtrField<Element>::Add() [with Element = >> tutorial::Person_PhoneNumber]’ >> addressbook.pb.h:491: instantiated from here >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h:271: error: >> cannot allocate an object of abstract type >> ‘tutorial::Person_PhoneNumber’ >> addressbook.pb.h:48: note: because the following virtual functions >> are pure within ‘tutorial::Person_PhoneNumber’: >> /media/EXTDIV/bin/include/google/protobuf/message.h:331: note: >> virtual google::protobuf::Metadata >> google::protobuf::Message::GetMetadata() const >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h: In static >> member function ‘static GenericType* >> google::protobuf::internal::GenericTypeHandler<GenericType>::New() >> [with GenericType = tutorial::Person]’: >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h:655: >> instantiated from ‘typename TypeHandler::Type* >> google::protobuf::internal::RepeatedPtrFieldBase::Add() [with >> TypeHandler = >> google::protobuf::RepeatedPtrField<tutorial::Person>::TypeHandler]’ >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h:829: >> instantiated from ‘Element* >> google::protobuf::RepeatedPtrField<Element>::Add() [with Element = >> tutorial::Person]’ >> addressbook.pb.h:520: instantiated from here >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h:271: error: >> cannot allocate an object of abstract type ‘tutorial::Person’ >> addressbook.pb.h:128: note: because the following virtual functions >> are pure within ‘tutorial::Person’: >> /media/EXTDIV/bin/include/google/protobuf/message.h:331: note: >> virtual google::protobuf::Metadata >> google::protobuf::Message::GetMetadata() const >> In file included from addressbook.pb.cc:3: >> addressbook.pb.h:16:2: error: #error This file was generated by an >> older version of protoc which is >> addressbook.pb.h:17:2: error: #error incompatible with your Protocol >> Buffer headers. Please >> addressbook.pb.h:18:2: error: #error regenerate this file with a newer >> version of protoc. >> addressbook.pb.cc:7:45: error: google/protobuf/wire_format_inl.h: No >> such file or directory >> addressbook.pb.cc: In function ‘void >> >> tutorial::protobuf_BuildDesc_addressbook_2eproto_AssignGlobalDescriptors(const >> google::protobuf::FileDescriptor*)’: >> addressbook.pb.cc:29: error: cannot allocate an object of abstract >> type ‘tutorial::Person’ >> addressbook.pb.h:128: note: because the following virtual functions >> are pure within ‘tutorial::Person’: >> /media/EXTDIV/bin/include/google/protobuf/message.h:331: note: >> virtual google::protobuf::Metadata >> google::protobuf::Message::GetMetadata() const >> addressbook.pb.cc:45: error: no matching function for call to >> >> ‘google::protobuf::internal::GeneratedMessageReflection::GeneratedMessageReflection(const >> google::protobuf::Descriptor*&, tutorial::Person*&, const int [4], >> int, int, int, const google::protobuf::DescriptorPool*, unsigned int)’ >> >> /media/EXTDIV/bin/include/google/protobuf/generated_message_reflection.h:344: >> note: candidates are: >> >> google::protobuf::internal::GeneratedMessageReflection::GeneratedMessageReflection(const >> google::protobuf::internal::GeneratedMessageReflection&) >> >> /media/EXTDIV/bin/include/google/protobuf/generated_message_reflection.h:122: >> note: >> >> google::protobuf::internal::GeneratedMessageReflection::GeneratedMessageReflection(const >> google::protobuf::Descriptor*, const google::protobuf::Message*, const >> int*, int, int, int, const google::protobuf::DescriptorPool*, >> google::protobuf::MessageFactory*, int) >> addressbook.pb.cc:47: error: cannot allocate an object of abstract >> type ‘tutorial::Person_PhoneNumber’ >> addressbook.pb.h:48: note: because the following virtual functions >> are pure within ‘tutorial::Person_PhoneNumber’: >> /media/EXTDIV/bin/include/google/protobuf/message.h:331: note: >> virtual google::protobuf::Metadata >> google::protobuf::Message::GetMetadata() const >> addressbook.pb.cc:61: error: no matching function for call to >> >> ‘google::protobuf::internal::GeneratedMessageReflection::GeneratedMessageReflection(const >> google::protobuf::Descriptor*&, tutorial::Person_PhoneNumber*&, const >> int [2], int, int, int, const google::protobuf::DescriptorPool*, >> unsigned int)’ >> >> /media/EXTDIV/bin/include/google/protobuf/generated_message_reflection.h:344: >> note: candidates are: >> >> google::protobuf::internal::GeneratedMessageReflection::GeneratedMessageReflection(const >> google::protobuf::internal::GeneratedMessageReflection&) >> >> /media/EXTDIV/bin/include/google/protobuf/generated_message_reflection.h:122: >> note: >> >> google::protobuf::internal::GeneratedMessageReflection::GeneratedMessageReflection(const >> google::protobuf::Descriptor*, const google::protobuf::Message*, const >> int*, int, int, int, const google::protobuf::DescriptorPool*, >> google::protobuf::MessageFactory*, int) >> addressbook.pb.cc:68: error: cannot allocate an object of abstract >> type ‘tutorial::AddressBook’ >> addressbook.pb.h:246: note: because the following virtual functions >> are pure within ‘tutorial::AddressBook’: >> /media/EXTDIV/bin/include/google/protobuf/message.h:331: note: >> virtual google::protobuf::Metadata >> google::protobuf::Message::GetMetadata() const >> addressbook.pb.cc:81: error: no matching function for call to >> >> ‘google::protobuf::internal::GeneratedMessageReflection::GeneratedMessageReflection(const >> google::protobuf::Descriptor*&, tutorial::AddressBook*&, const int >> [1], int, int, int, const google::protobuf::DescriptorPool*, unsigned >> int)’ >> >> /media/EXTDIV/bin/include/google/protobuf/generated_message_reflection.h:344: >> note: candidates are: >> >> google::protobuf::internal::GeneratedMessageReflection::GeneratedMessageReflection(const >> google::protobuf::internal::GeneratedMessageReflection&) >> >> /media/EXTDIV/bin/include/google/protobuf/generated_message_reflection.h:122: >> note: >> >> google::protobuf::internal::GeneratedMessageReflection::GeneratedMessageReflection(const >> google::protobuf::Descriptor*, const google::protobuf::Message*, const >> int*, int, int, int, const google::protobuf::DescriptorPool*, >> google::protobuf::MessageFactory*, int) >> addressbook.pb.cc: In function ‘void >> tutorial::protobuf_BuildDesc_addressbook_2eproto()’: >> addressbook.pb.cc:97: error: ‘class google::protobuf::DescriptorPool’ >> has no member named ‘InternalBuildGeneratedFile’ >> addressbook.pb.cc: In member function ‘virtual >> tutorial::Person_PhoneNumber* tutorial::Person_PhoneNumber::New() >> const’: >> addressbook.pb.cc:184: error: cannot allocate an object of abstract >> type ‘tutorial::Person_PhoneNumber’ >> addressbook.pb.h:48: note: since type ‘tutorial::Person_PhoneNumber’ >> has pure virtual functions >> addressbook.pb.cc: In member function ‘virtual tutorial::Person* >> tutorial::Person::New() const’: >> addressbook.pb.cc:247: error: cannot allocate an object of abstract >> type ‘tutorial::Person’ >> addressbook.pb.h:128: note: since type ‘tutorial::Person’ has pure >> virtual functions >> addressbook.pb.cc: In member function ‘virtual tutorial::AddressBook* >> tutorial::AddressBook::New() const’: >> addressbook.pb.cc:295: error: cannot allocate an object of abstract >> type ‘tutorial::AddressBook’ >> addressbook.pb.h:246: note: since type ‘tutorial::AddressBook’ has >> pure virtual functions >> In file included from >> /media/EXTDIV/bin/include/google/protobuf/unknown_field_set.h:43, >> from >> >> /media/EXTDIV/bin/include/google/protobuf/generated_message_reflection.h:44, >> from addressbook.pb.h:21, >> from addressbook.pb.cc:3: >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h: In static >> member function ‘static GenericType* >> google::protobuf::internal::GenericTypeHandler<GenericType>::New() >> [with GenericType = tutorial::Person_PhoneNumber]’: >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h:655: >> instantiated from ‘typename TypeHandler::Type* >> google::protobuf::internal::RepeatedPtrFieldBase::Add() [with >> TypeHandler = >> google::protobuf::RepeatedPtrField<tutorial::Person_PhoneNumber>::TypeHandler]’ >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h:829: >> instantiated from ‘Element* >> google::protobuf::RepeatedPtrField<Element>::Add() [with Element = >> tutorial::Person_PhoneNumber]’ >> addressbook.pb.h:491: instantiated from here >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h:271: error: >> cannot allocate an object of abstract type >> ‘tutorial::Person_PhoneNumber’ >> addressbook.pb.h:48: note: since type ‘tutorial::Person_PhoneNumber’ >> has pure virtual functions >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h: In static >> member function ‘static GenericType* >> google::protobuf::internal::GenericTypeHandler<GenericType>::New() >> [with GenericType = tutorial::Person]’: >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h:655: >> instantiated from ‘typename TypeHandler::Type* >> google::protobuf::internal::RepeatedPtrFieldBase::Add() [with >> TypeHandler = >> google::protobuf::RepeatedPtrField<tutorial::Person>::TypeHandler]’ >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h:829: >> instantiated from ‘Element* >> google::protobuf::RepeatedPtrField<Element>::Add() [with Element = >> tutorial::Person]’ >> addressbook.pb.h:520: instantiated from here >> /media/EXTDIV/bin/include/google/protobuf/repeated_field.h:271: error: >> cannot allocate an object of abstract type ‘tutorial::Person’ >> addressbook.pb.h:128: note: since type ‘tutorial::Person’ has pure >> virtual functions >> make: *** [add_person_cpp] Error 1 >> /media/EXTDIV/src/protobuf-2.3.0/examples:1015:15$ >> >> On Tue, Feb 2, 2010 at 1:38 PM, Kenton Varda <ken...@google.com> wrote: >> > What does "protoc --version" print? >> > >> > On Tue, Feb 2, 2010 at 10:31 AM, hap 497 <hap...@gmail.com> wrote: >> >> >> >> Hi, >> >> >> >> I am trying to compile protobuf cpp example. >> >> $ cd /media/EXTDIV/src/protobuf-2.3.0/examples >> >> $ make cpp >> >> >> >> But I am getting these errors: >> >> c++ add_person.cc addressbook.pb.cc -o add_person_cpp `pkg-config >> >> --cflags --libs protobuf` >> >> In file included from add_person.cc:6: >> >> addressbook.pb.h:16:2: error: #error This file was generated by an >> >> older version of protoc which is >> >> addressbook.pb.h:17:2: error: #error incompatible with your Protocol >> >> Buffer headers. Please >> >> addressbook.pb.h:18:2: error: #error regenerate this file with a newer >> >> version of protoc. >> >> add_person.cc: In function ‘int main(int, char**)’: >> >> add_person.cc:66: error: cannot declare variable ‘address_book’ to be >> >> of abstract type ‘tutorial::AddressBook’ >> >> addressbook.pb.h:246: note: because the following virtual functions >> >> are pure within ‘tutorial::AddressBook’: >> >> >> >> I downnload the source tar ball 2.3.0 on Ubuntu. Is that out of date? >> >> >> >> Thank you. >> >> >> >> -- >> >> You received this message because you are subscribed to the Google >> >> Groups >> >> "Protocol Buffers" group. >> >> To post to this group, send email to proto...@googlegroups.com. >> >> To unsubscribe from this group, send email to >> >> protobuf+unsubscr...@googlegroups.com. >> >> For more options, visit this group at >> >> http://groups.google.com/group/protobuf?hl=en. >> >> >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups >> > "Protocol Buffers" group. >> > To post to this group, send email to proto...@googlegroups.com. >> > To unsubscribe from this group, send email to >> > protobuf+unsubscr...@googlegroups.com. >> > For more options, visit this group at >> > http://groups.google.com/group/protobuf?hl=en. >> > > > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to proto...@googlegroups.com. To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.