gRPC源码编译和使用(windows+vs) --史上最详细教程

gRPC源码编译和使用(示例含有编译好的库,可以直接运行) 

作者:melon

日期:2019/7/25

 

概述:

gRPC是geoogle开源的通用高性能RPC框架,其主要面向移动应用开发并基于HTTP/2协议标准设计,它支持的是使用Protocol Buffers来编写Service定义,支持较多语言扩平台并且拥有强大的二进制序列化工具集。gRPC提供了一种简单的放来精确地定义服务和为ios、android和后台支持服务自动生成可靠性很强的客户端功能库。

 

工具准备

1.git 用于拉取gRPC源代码和依赖的第三方库

下载地址: https://git-scm.com/downloads

2.Golang编译工具,用于源代码编译(非必须)

下载地址:https://www.golangtc.com/download

3.Perl编译工具,用于源代码编译(非必须)

下载地址http://www.perl.org/get.html

4.VS2017/VS2015随你喜欢,任选一个,用于源代码编译

5.CMake,用于工程配置

下载地址https://cmake.org/download/

 

gRPC项目构建和编译

1.源码获取和相关第三方依赖库下载

使用git获取源码:git clone  https://github.com/grpc/grpc.git

gRPC源码编译和使用(windows+vs) --史上最详细教程_第1张图片

 

打开.gitmodules,可以看到很多子模块的下载地址,这就是依赖的第三方库, 你可以git submodule update --init来更新所有子模块,但是我尝试过非常 慢,几乎不能下载,使用地址一个个下载比较可靠。第三方库的路径是 grpc/third_party,里面会有很多空的文件夹,选择你需要的库下载

gRPC源码编译和使用(windows+vs) --史上最详细教程_第2张图片

 

下载这几个常用的就ok了,如果需要别的模块可以后续下载。注意cares 模块有两层,要进入cares里面下载。

2.项目配置和生成vs2017项目

使用CMake配置项目

gRPC源码编译和使用(windows+vs) --史上最详细教程_第3张图片

 

D:/grpc是源码顶级目录路径,D:/grpc/.build是项目配置和项目生成路径, 可以自己选择生成的路径,配置号路径后点击Configure,选择生成项目的 配置,根据你VS的版本,然后就会自动进行项目配置,需要大概5分钟

gRPC源码编译和使用(windows+vs) --史上最详细教程_第4张图片

 

配置过程会产生警告,可以忽略

 

配置完后点Generate,生成vs项目,生成完点Open Project

 

选择需要的库生成即可,示例会用到libprotobufd.lib,grpc.lib,grpc++.lib,

gpr.lib,Ws2_32.lib(windows系统库),zlibd.lib,cares.lib,address_sorting.lib

和protoc.exe,grpc_cpp_plugin.exe

gRPC源码编译和使用(windows+vs) --史上最详细教程_第5张图片

编译grpc模块如果出现以下错误,是因为没下载boringssl这个子模块,下 载重新配置一下就可以了

 

gRPC源码编译和使用(windows+vs) --史上最详细教程_第6张图片

3.编译helloworld示例

新建helloworld项目拷贝grpc\examples\cpp\helloworld的 greeter_client.cc和greeter_server.cc到项目目录,同时拷贝grpc\examples\helloworld.proto,新建lib和include文件夹,分别把生成的lib和头文件拷贝进去。gRPC源码编译和使用(windows+vs) --史上最详细教程_第7张图片

protoc.exe --grpc_out=. --plugin=protoc-gen-grpc=grpc_cpp_plugin.exehelloworld.proto

protoc.exe --cpp_out=. helloworld.proto

通过protoc.exe和grpc_cpp_plugin.exe生成.cc和.h这四个文件

 

Include文件夹包含了这几个文件,在源码目录的grpc\include和grpc\third_party\protobuf\src可以找到,拷贝过来就行了

gRPC源码编译和使用(windows+vs) --史上最详细教程_第8张图片

配置项目的库目录以及附加依赖项

gRPC源码编译和使用(windows+vs) --史上最详细教程_第9张图片

生成.cc和.h这四个文件加入项目编译,报错

在预处理器加入_WIN32_WINNT=0X0600,编译通过

gRPC源码编译和使用(windows+vs) --史上最详细教程_第10张图片

 

加入服务器入口文件greet_server.cc,编译报错

缺少windows系统库Ws2_32.lib,在附加依赖项添加进来即可

编译通过,将生成exe改名为grpc_helloworld_server.exe,继续添加greet_client.cc,

隐藏server的main函数,同时在client main函数最后一行加上system(“pause”),重新编译。先运行服务器,再运行客户端,效果图如下:

gRPC源码编译和使用(windows+vs) --史上最详细教程_第11张图片

源码下载链接:https://download.csdn.net/download/weixin_28927079/11431313

参考链接:https://blog.csdn.net/zqlin555/article/details/84328443

你可能感兴趣的:(网络框架)