1.编译报错
- 不正确编译
$ g++ -o main account.cpp …/protobuf/build/libprotobuf-lite.a
/tmp/ccOySh1U.o:在函数‘main’中:
account.cpp:(.text+0x26):对‘Account::Account()’未定义的引用
/tmp/ccbZPZqN.o:在函数‘protobuf_account_2eproto::(anonymous namespace)::protobuf_AssignDescriptors()’中:
account.pb.cc:(.text+0x6e):对google::protobuf::ServiceDescriptor const**)’未定义的引用
2.编译参数及所需库
原因链接时缺少相关的目标文件(.o)或库文件(.a/.so)
- 编译
account.pb.cc也需要编译, 如果是工程中, 可以单独编译, 由于只有一个文件所以就放到一块编译了
$ g++ account.cpp account.pb.cc libprotobuf.a -o main
也可以先生成目标文件
g++ -c main account.cpp account.pb.cc libprotobuf.a
得到两个account.o account.pb.o
链接生成可执行依然需要libprotobuf.a库
g++ -o main account.o account.pb.o libprotobuf.a
得到main可执行