//User.proto
package ProtoMessage;
message User
{
required uint32 ID = 1;
required string name = 2;
}
message UserList
{
repeated User user = 1;
}
message RoomList
{
repeated string name = 1;
}
编译成User.pb.h和User.pb.cpp文件
cd protoc.exe所在的目录
protoc -I=. –cpp_out=. User.proto
配置VS2013环境变量
1、头文件目录
2、库目录
3、库文件名
测试:
// Messages.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include "messages.pb.h"
#include "User.pb.h"
//using namespace messagesuites;
int _tmain(int argc, _TCHAR* argv[])
{
messagesuites::RoomChatRequest request;
request.set_room("GuangZhou");
request.set_msg("Hello World!");
ProtoMessage::UserList listUser;
ProtoMessage::User* pUser;
pUser = listUser.add_user();
pUser->set_id(10001);
pUser->set_name("Zhang Wuji");
pUser = listUser.add_user();
pUser->set_id(10002);
pUser->set_name("Zhou Zhiruo");
pUser = listUser.add_user();
pUser->set_id(10003);
pUser->set_name("Zhao Ming");
std::cout << listUser.user(0).id() << ": " << listUser.user(0).name() << std::endl;
std::cout << listUser.user(1).id() << ": " << listUser.user(1).name() << std::endl;
std::cout << listUser.user(2).id() << ": " << listUser.user(2).name() << std::endl;
char szBuffer[1024];
listUser.SerializeToArray(szBuffer, sizeof(szBuffer));
ProtoMessage::UserList listUser2;
listUser2.ParseFromArray(szBuffer, strlen(szBuffer) + 1);
std::cout << std::endl;
std::cout << listUser2.user(0).id() << ": " << listUser.user(0).name() << std::endl;
std::cout << listUser2.user(1).id() << ": " << listUser.user(1).name() << std::endl;
std::cout << listUser2.user(2).id() << ": " << listUser.user(2).name() << std::endl;
ProtoMessage::RoomList listRoom;
listRoom.add_name("GuangDong");
listRoom.add_name("ShenZhen");
listRoom.add_name("DongGuang");
memset(szBuffer, 0, sizeof(szBuffer));
listRoom.SerializeToArray(szBuffer, sizeof(szBuffer));
ProtoMessage::RoomList listRoom2;
listRoom2.ParseFromArray(szBuffer, strlen(szBuffer) + 1);
std::cout << std::endl;
std::cout << listRoom2.name(0) << " " << listRoom2.name(1) << " " << listRoom2.name(2) << std::endl;
getchar();
return 0;
}