Запустите protobuf из приведенного примера на Eclipse (C ++) - PullRequest
0 голосов
/ 21 января 2019

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

Ниже я опишу все шаги: 1. Следуйте инструкциям по установке компилятора protobuf https://github.com/protocolbuffers/protobuf/tree/master/src

2. Следуйте инструкциям по установке подключаемого модуля protobuf для затмения https://github.com/google/protobuf-dt (Не уверен, если это необходимо).

3. Откройте каталог protobuf / examples / . Запустите add_person.cc в затмении Компилятор выдает следующую ошибку. Я вижу, что это ошибка связи. но я не уверен, куда иду не так.

make all 
Building file: ../src/add_person.cc
Invoking: GCC C++ Compiler
g++ -std=c++11 -I/home/rohan/Downloads/Utilities/protobuf/examples -O0 -g3 -Wall -c -fmessage-length=0 -pthread -MMD -MP -MF"src/add_person.d" -o "src/add_person.o" "../src/add_person.cc"
Finished building: ../src/add_person.cc

Building target: add_person
Invoking: GCC C++ Linker
g++ -L/usr/lib64 -pthread -o "add_person"  ./src/add_person.o   -lprotobuf
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: ./src/add_person.o: in function `main':
/home/rohan/eclipse-workspace/add_person/Debug/../src/add_person.cc:81: undefined reference to `tutorial::AddressBook::AddressBook()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /home/rohan/eclipse-workspace/add_person/Debug/../src/add_person.cc:81: undefined reference to `tutorial::AddressBook::~AddressBook()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /home/rohan/eclipse-workspace/add_person/Debug/../src/add_person.cc:81: undefined reference to `tutorial::AddressBook::~AddressBook()'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: ./src/add_person.o: in function `google::protobuf::internal::GenericTypeHandler<tutorial::Person_PhoneNumber>::New(google::protobuf::Arena*)':
/usr/local/include/google/protobuf/repeated_field.h:656: undefined reference to `tutorial::Person_PhoneNumber* google::protobuf::Arena::CreateMaybeMessage<tutorial::Person_PhoneNumber>(google::protobuf::Arena*)'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: ./src/add_person.o: in function `google::protobuf::internal::GenericTypeHandler<tutorial::Person>::New(google::protobuf::Arena*)':
/usr/local/include/google/protobuf/repeated_field.h:656: undefined reference to `tutorial::Person* google::protobuf::Arena::CreateMaybeMessage<tutorial::Person>(google::protobuf::Arena*)'
collect2: error: ld returned 1 exit status
make: *** [makefile:47: add_person] Error 1
"make all" terminated with exit code 2. Build might be incomplete.

1 Ответ

0 голосов
/ 24 января 2019

Обратите внимание: это может не решить проблемы других.

В примере программы, которую я запускал в eclipse, в проекте был только файл add_person.cc.А файлы, содержащие классы и определения протокольного буфера (addressbook.pb.h & addressbook.pb.cc), не были в проекте.Вместо этого я добавил их как -I\path\to\the\directory\, что привело к этой ошибке.

Для этой минимальной проблемы мне просто пришлось переместить / скопировать файлы addressbook.pb.h & addressbook.pb.cc внутри проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...