我想在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 –