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<protobuf%2bunsubscr...@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<protobuf%2bunsubscr...@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.

Reply via email to