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
.................................................................................
多分私は静的ライブラリを正しく作成していませんか?