Protocol Buffersを使おう!!(2)
Protocol Buffersを使おう!!(1) では、インストールからテストアプリの実行まで書きました。
では、次は、同梱のサンプルを実行してみましょう。
その前に準備。
1.VS2008で新規プロジェクトを作成(C++Consoleアプリを選択)
2.必要なファイルをコピーする
(1)でビルドする為に利用した*.slnがあるフォルダに、"extract_includes.bat"という
バッチファイルが存在します。
これを実行すると、以下のようにprotocolbufferを利用する為に必要なヘッダーファイルが
カレントディレクトリにincludeというフォルダ名でコピーされてきます。
\protobuf-2.0.0beta\vsprojects\include\google\protobuf...以下省略
これを1.で作成したプロジェクトにコピーします。
この時、"*.vcproj"のあるディレクトリにgoogleディレクトリをコピーしましょう。
なぜなら、ライブラリ利用時に参照するパスが、google/なんとかってなっているので・・・
(1)のビルドでできあがった、"*lib"も同様に、プロジェクトのあるところにコピーしておきます。
"*.dll"は、後ほどできるdebugディレクトリにコピーしておきましょう。
3.サンプルデータ定義(proto)をビルドする
今回使うサンプルは、\protobuf-2.0.0beta\examplesに収録されているのですが、
このままでは、ソースが足りません!!
そこで使うのが、(1)でビルドしたprotoc.exe。
使い方は、\protobuf-2.0.0beta\examplesで以下のように実行
protoc.exe --cpp_out=. addressbook.proto
これでカレントに、
addressbook.pb.cc addressbook.pb.h
が生成されます。
作成したら、いかのようにプロジェクトに追加しておきましょう。
そのとき
list_people.cc add_person.cc
4.プロジェクトの設定
あと、重要な設定として、プロジェクトのビルド設定があります。
まず、include検索ディレクトリに"."を追加
文字コードは、Not Set(ユニコード使わない)を選びます。
あとは、プリプロセッサで出力されるexeが、ReadとWriteの2種類を作りたいので、
__GOOGLE_PROCBUF_READ,__GOOGLE_PROCBUF_WRITEを設定してます。
詳しくは、ビルドの構成を参考に。
今回、コピーしたlibprotobuf.lib,libprotoc.libは、以下のようにソースに埋めてます。
#pragma comment(lib,"libprotobuf.lib") #pragma comment(lib,"libprotoc.lib")
あとは、ビルドの構成を選んで、Writeで作るかReadで作るか選んで下さい。
そうすると、それぞれのexeが作成されます。
5.実行してみる
作成したwrite版のexeは、以下のように
addressbookw.exe DB
DBというデータを作成してデータを保存するように使います。
このとき出てくる質問に答えて適当なデータを保存します。
それを行ったら、今度は、read版のexeを実行して、
保存されたデータが表示されるかみてみましょう。
今回説明に使ったサンプルは、ここから落とせます。