XCode で C++ 用の Google Protocol Buffers を使用したいと考えています。
これは、ライブラリがある私のディレクトリです: /Developer/Protobuf.
このディレクトリ内で行ったことは、コンパイル.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
.................................................................................
多分私は静的ライブラリを正しく作成していませんか?