我想在XCode中使用Google Protocol Buffers for C++。
這是我有圖書館的目錄:/Developer/Protobuf
。在XCode中鏈接協議緩衝區庫
我在這個目錄裏面做了什麼,編譯了.proto
並生成了.pb.h
&。 pb.cc
文件。在此之後產生的目標文件:
clang++ -arch x86_64 -I./src -I./ -c file.pb.cc
然後:
ar -r file.pb.a file.pb.o
在Xcode中,在Build Phases -> Link Binary With Libraries
我已經加入file.pb.a
靜態庫。在Build Settings -> Header Search Paths
我已添加/Developer/Protobuf/src
。在Build Settings -> Librabry Search Paths
我已添加/Developer/Protobuf
。在Build Settings -> User Header Search Paths
我也加了/Developer/Protobuf/src
。
但是,當我編譯了該項目,我總是得到這樣的錯誤:
Undefined symbols for architecture x86_64:
"google::protobuf::DescriptorPool::generated_pool()", referenced from:
musicbrainz::protobuf_AssignDesc_musicbrainz_2eproto() in musicbrainz.pb.o
"google::protobuf::DescriptorPool::InternalAddGeneratedFile(void const*, int)", referenced from:
musicbrainz::protobuf_AddDesc_musicbrainz_2eproto() in musicbrainz.pb.o
"google::protobuf::MessageFactory::generated_factory()", referenced from:
musicbrainz::protobuf_AssignDesc_musicbrainz_2eproto() in musicbrainz.pb.o
"google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))", referenced from:
musicbrainz::protobuf_AddDesc_musicbrainz_2eproto() in musicbrainz.pb.o
.................................................................................
也許我沒有創建靜態庫是否正確?
仍然得到同樣的錯誤上MAC爲protobuf的-2.4 .1 –