c++でprotobufを使用する
1250 ワード
まずprotobuf-2.5をダウンロードします.0,解凍後,VSを開いてコンパイルしlibprotocを得る.lib、libprotobuf-lite.lib、libprotobuf.libとprotoc.exe
ファイルprotoファイルを作成する:testpro.proto、内容は以下の通りです.
message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phone = 4; }
protocでexe対testpro.protoはコンパイルされ、コマンドは以下の通りです.
protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/testpro.proto
すなわち、protoc-I=./--cpp_out=././testpro.proto
現在のディレクトリの下に2つのファイルtestproが得られます.pb.ccとtestpro.pb.h
vsを使用してプロジェクトを作成しtestpro.pb.cc、testpro.pb.h、libprotoc.libとlibprotobuf.libをプロジェクトディレクトリにコピーしprotobuf-2.5.0srcgoogleフォルダのパスをプロジェクトディレクトリに追加すると、使用できます.コードは次のとおりです.
ファイルprotoファイルを作成する:testpro.proto、内容は以下の通りです.
message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phone = 4; }
protocでexe対testpro.protoはコンパイルされ、コマンドは以下の通りです.
protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/testpro.proto
すなわち、protoc-I=./--cpp_out=././testpro.proto
現在のディレクトリの下に2つのファイルtestproが得られます.pb.ccとtestpro.pb.h
vsを使用してプロジェクトを作成しtestpro.pb.cc、testpro.pb.h、libprotoc.libとlibprotobuf.libをプロジェクトディレクトリにコピーしprotobuf-2.5.0srcgoogleフォルダのパスをプロジェクトディレクトリに追加すると、使用できます.コードは次のとおりです.
#include "testpro.pb.h"
#include <iostream>
#include <string>
using namespace std;
#pragma comment(lib,"libprotobuf.lib")
#pragma comment(lib,"libprotobuf-lite.lib")
void TestProto()
{
Person* per = new Person;
per->set_id(100);
per->PrintDebugString();
}
int main()
{
TestProto();
return 0;
}