2016-07-17 1 views
0

Я после cpp tutorial on google protocol buffersC++ Linux Протокол Google Буферы - не может запустить скомпилированный прото CPP файлы из учебника

Я установил Google протокола Буферы на Ubuntu и скомпилирован файл .proto, так что я получил pb.h и рь. cc сгенерированные файлы.

enter image description here

Я сделал ReadAddressBook.cpp очень минимален. Он просто создает объект proto и проверяет соответствие версии.

#include <iostream> 
#include <fstream> 
#include <string> 
#include "address_book.pb.h" 
using namespace std; 

int main(){ 

GOOGLE_PROTOBUF_VERIFY_VERSION; 

tutorial::AddressBook address_book; 

return 0; 
} 

Я составил его с

g++ -c ReadAddressBook.cpp 

(также с G ++ -c ReadAddressBook.cpp -lprotobuf -lpthread но он дал те же самые результаты)

Однако при работе:

g++ -o ReadAddressBook ReadAddressBook.o 

enter image description here

Это дало мне ссылки на google protobuf src было недоступно. Почему это должно быть?

+0

Вы должны добавить 'address_book.pb.cc' для компиляции и связывания. попробуйте этот 'g ++ ReadAddressBook.cpp address_book.pb.cc -lprotobuf -lpthread'. – lnman

+0

@nomem Затем, когда я скомпилирую после этого, поставлю g ++ -c ReadAddressBook.cpp или g ++ -c ReadAddressBook.cpp address_book.pb.cc? Какими будут следующие шаги? – BDillan

+0

Команда, которую я дал, напрямую выполнит исполняемый файл. Если вы хотите скомпилировать ссылку, тогда попробуйте следующее: 'g ++ -c ReadAddressBook.cpp address_book.pb.cc' и' g ++ -o ReadAddressBook ReadAddressBook.o address_book.pb.o -lprotobuf -lpthread' – lnman

ответ

0

Нужно добавить -lprotobuf в фазу , но похоже, что вы пытались использовать его на этапе компиляции. То есть, вы хотите:

g++ -c ReadAddressBook.cpp 
g++ -o ReadAddressBook ReadAddressBook.o -lprotobuf -lpthread