Git clone之:git clone https://github.com/google/protobuf.gitc++
或者直接下载release版本:https://github.com/google/protobuf/releasesgit
本例选择从release下载3.7.0版本github
下载并解压到目录: D:\wzx\protobuf\protobuf-3.7.0socket
准备工具: VS2017(包含C++模块),函数
提取码:jwa7 ui
D:\wzx\protobuf\cmake-3.14.0-win64-x64\bin\cmake-gui.exegoogle
Source Code目录: D:/wzx/protobuf/protobuf-3.7.0/cmakespa
build the binaries目录:D:/wzx/protobuf/cmake-3.14.0-win64-x64/bin/protobuf-build
菜单栏Tools->configure,选择generator:
本例使用VS2017 64位版本,因此选择:Visual Studio 15 2017
4.点击finish,结果以下图:
5.将列表中的protobuf_BUILD_SHARED_LIBS勾上, 而后generator。
查看D:\wzx\protobuf\cmake-3.14.0-win64-x64\bin\protobuf-build目录,你会发现生成了一个VS工程。
而后等待编译完成。。。速度有点慢,大概要花几分钟。
http://www.cnblogs.com/dkblog/archive/2012/03/27/2419010.html
protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/xxx.proto
$SRC_DIR:源地址 D:\wzx\protobuf\cmake-3.14.0-win64-x64\bin\protobuf-build\Release
$DST_DIR:目的地址 D:\wzx\protobuf\cmake-3.14.0-win64-x64\bin\protobuf-build\Release\h
$SRC_DIR:源地址 D:\wzx\protobuf\cmake-3.14.0-win64-x64\bin\protobuf-build\Release
期间遇到了两个问题:
解决方案:添加头文件的引用 “#include "pch.h“,注意必定要添加到全部头文件最上面
解决方案:在添加的pch.h中添加#define PROTOBUF_USE_DLLS宏定义
解决方案:文件的属性页----->c/c++--->常规,将SDL检查改成否
proto格式
message SearchRequest { required string query = 1; optional int32 page_number = 2; optional int32 result_per_page = 3; }
经过socket实现的Tcp传输完成client到server的传输内容的序列化和反序列化
//client
//使用protobuf *序列化 SearchRequest* search = new SearchRequest; search->set_page_number(1); search->set_result_per_page(10); int buffsize = search->ByteSize(); void* buff = malloc(buffsize); search->SerializeToArray(buff, buffsize); //发送 send(sclient, (char*)buff, strlen((char*)buff), 0);
//server
//protobuf *反序列化 SearchRequest* request = new SearchRequest; request->ParseFromArray((void*)revData, ret); int pageNum = request->page_number(); int perPage = request->result_per_page();