gRPC官方Windows安装说明:

  • Install Visual Studio 2015 or 2017 (Visual C++ compiler will be used).
  • Install Git.
  • Install CMake.
  • Install Active State Perl (choco install activeperl) - required by boringssl
  • Install Go (choco install golang) - required by boringssl
  • Install yasm and add it to PATH (choco install yasm) - required by boringssl
  • (Optional) Install Ninja (choco install ninja)

在Windows上源码编译安装gRPC还是很麻烦的需要MSVC编译器、git、cmake、Perl、go、yasm、Ninja等工具,一些工具的安装可以使用choco(Windows上的包管理工具)来安装。

准备环境

https://git-scm.com/上下载git,当前版本2.23.0。

https://cmake.org/download/上下载cmake,下载cmake-3.15.3-win64-x64.zip,解压后方式何时位置,将cmake工具所在bin目录加入到系统环境变量Path。

  安装choco

  

  安装Perl、go、yasm等

  

  使用choco安装activeperl在我的电脑上很慢,慢的很,直接在官网下载又需要注册登陆用户,也很麻烦,最后直接在第三方网站下载,直接来安装!

  

  

  

下载gRPC源码

  新建一个文件夹,命名为grpc_plugs,右击空白处选择Git Bash Here

  git clone https://github.com/grpc/grpc.git

  cd grpc 进入grpc文件夹,checkout当前较新版本

  git checkout  v1.23.0

  查看当前版本

  git branch -v

  下载依赖

  git submodule update  --init

  执行操作需要联网下来,请耐心等待…

  下载完毕后,找到并打开文件./grpc/third_party/zlib/gzguts.h找到

  #ifdef _WIN32

  #inlcude <stddef.h>

  #endif

  改为

  #ifdef _WIN32

  #include <stddef.h>

  #pragma warning(disable:4996)

  #endif

  屏蔽一些警告,感觉没啥实际作用,只是照着做而已。

VS2017 编译gRPC源码

  mkdir .build

  cd .build

  cmake –version

  cmake .. -G "Visual Studio 15 2017 Win64" -DCMAKE_BUILD_TYPE=Release

  配置makefile,过程比较长,期间没有出现error啥的就没啥问题,会生成grpc.sln。

  cmake --build .

  上述命令执行VS2017编译操作,和直接打开grpc.sln执行编译一样的效果。

  耐心等待编译完成…

  编译完成后生成gRPC以及第三方依赖库的lib静态库文件,见下图所示:

  

  

HelloWorld

  gRPC自带的C++ HelloWorld 例子位于.\grpc\examples\cpp\helloworld

  在VS2017中新建空的C++工程gRPCTest

  将helloworld.proto拷贝到工程目录下

  将生成的protoc.exe拷贝到工程目录下

  工程目录下运行cmd执行protoc编译命令生成生成源代码文件helloworld.pb.h,helloworld.pb.cpp,helloworld.grpc.pb.h,helloworld.grpc.pb.cpp。

  protoc -I="./protos" --grpc_out="./protos" --plugin=protoc-gen-grpc=“E:\LearningOpensourceLib\gRPC\grpc_plugs\grpc\.build\Debug\grpc_cpp_plugin.exe " "./protos\hw.proto"

  protoc -I="./protos" --cpp_out="./protos" "./protos\hw.proto"

  拷贝grpc_cpp_plugin.exe,greeter_client.cc,greeter_server.cc至工程目录下

  将文件都添加至工程中去,最终的工程结构如下:

  

  选择Debug – x64构建配置

  

  配置include目录以及lib目录和lib导入:我这里直接添加的绝对路径

  

  

  

  需要配置预处理器定义_WIN32_WINNT=0x0A00,否则会报“Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)”的错误。

  

  客户端代码新增std::cin.get()避免窗口一闪而退:

  

  服务端代码:

  

  编译服务端时,请屏蔽掉客户端的main函数代码

  编译客户端时,请屏蔽掉服务端的main函数代码

  生成exe文件改名,并将zlibd.dll放在一起

  

  分别运行grpc-server.exe和grpc-client.exe

  

Windows+VS2017使用gRPC的更多相关文章

  1. Windows+Qt使用gRPC

    上篇文章<Windows+VS2017使用gRPC>编译出了Windows下可用的gRPC静态lib库文件,在此基础上要想在Qt上使用,需要使用MSVC2017 64bit构建组件进行构建 ...

  2. log4cxx日志库在Windows+VS2017上的编译使用

    项目中用到了log4cxx,但是Debug版本运行时老是提示找不到Properities::setProperty?怀疑是提供的库有问题,所以尝试源码来重新编译一下.log4cxx官方主页:https ...

  3. windows vs2017环境下编译webkit

    源码地址:https://github.com/BlzFans/wke 先看官方的说明: Web和Flash的嵌入式3D游戏,基于WebKit 建筑工作单元 VS2005: 1安装Visual Stu ...

  4. Windows VS2017 编译 libssh2 1.7.0(执行命令、文件上传、下载)

    下载安装 OpenSSL 要编译 libssh2,必须先编译好 OpenSSL 的静态库,直接从 http://slproweb.com/products/Win32OpenSSL.html 下载已经 ...

  5. windows vs2017环境下编译webkit 2

    WebKit在Windows上 内容 安装开发工具 设置Git存储库 设置支持工具 构建WebKit 安装Cygwin(可选) 得到一个崩溃日志 本指南提供了用于构建WebKit的指令在Windows ...

  6. windows+vs2017+C语言 引入mysql.h对MYSQL数据库的操作

    mysql.h文件用作VS开发用,用来连接数据库.没有mysql.h文件,就无法调用mysql的东西 也无法用C语言对MYSQL操作. 一般安装了mysql之后,这个文件就在mysql目录的inclu ...

  7. 尝试在iOS上使用gRPC

    简介 gRPC,google的远程过程调用框架,传输协议使用 HTTP2, 序列化协议使用 protobuf.gRPC 使用 HTTP2 传输协议传输 protobuf 序列化的二进制数据,有极高的效 ...

  8. 谷歌发布的首款基于HTTP/2和protobuf的RPC框架:GRPC

    Google 刚刚开源了grpc,  一个基于HTTP2 和 Protobuf 的高性能.开源.通用的RPC框架.Protobuf 本身虽然提供了RPC  的定义语法,但是一直以来,Google 只开 ...

  9. protoc 命令参数

    protoc 命令的获得 源码在 https://github.com/google/protobuf , 如果不想自己编译获得最新版本,则可以下载官方编译好的各个平台的,下载地址:https://g ...

随机推荐

  1. Android中GridView的按下效果及selector的使用

    gridView.setSelector(new ColorDrawable(Color.TRANSPARENT)); 详细说明:http://blog.csdn.net/songzhiyong112 ...

  2. LG2770/LOJ6122 航空路线问题 费用流 网络流24题

    问题描述 LG2770 LOG6122 题解 教训:关掉流同步之后就不要用其他输入输出方式了. 拆点. 两个拆点之间连\((1,1)\),其他连\((1,0)\) \(\mathrm{Code}\) ...

  3. 使用教育邮箱免费申请JetBrains套装(IntelliJ, PhpStorm, WebStorm...)

    想下个PhpStorm来写php,发现可以使用教育账号白嫖. 申请步骤 打开 申请页面 ,点击 “APPLY NOW” 开始申请. 填写姓名,以及学校提供给你的邮箱(edu后缀邮箱,或.end.cn) ...

  4. Tableau 基础

    1.Tableau产品介绍 tableau desktop:桌面端分析工具,分个人版和专业版,可连接几乎所有数据源,速度快 tableau server:一款商业智能应用程序,用于发布和管理table ...

  5. wal2json pg扩展centos7构建

    使用wal2json可以将pg 变动输出为json 格式,是一个pg 扩展,支持pg9.4+ 目前看到netflix 的dblog 对于pg 的支持就是基于此插件 以下是关于centos 7的构建说明 ...

  6. Codeforces Global Round 2 D 差分 + 前缀和 + 二分

    https://codeforces.com/contest/1119/problem/D 题意 有n个数组,每个数组大小为\(10^{18}+1\)且为等差数列,给出n个数组的\(s[i]\),q次 ...

  7. 题解 P3620 【[APIO/CTSC 2007]数据备份】

    直接贪心(每次选最小)的话显然不对...样例都过不了... 选两个办公楼的时候,显然不能跨越另一个楼,这样不优... 于是 先把原数列处理成n-1个的数(每一个办公楼和上一个的距离),存在a[]中 题 ...

  8. DP问题(1) : hdu 2577

    题目转自hdu 2577,题目传送门 题目大意: 现给你n个区分大小写的字符串,大小写可用Caps Lock和shift切换(学过计算机的都知道) 但是有一点需要注意(shift是切换,若现在是大写锁 ...

  9. 消息队列:RabbitMQ安装

    1. 安装RabbitMQ之前需要先安装Erlang环境 然后配置环境变量 2. 安装完后 我们进入到我们安装到 sbin目录C:\Program Files\RabbitMQ Server\rabb ...

  10. JVM系列之三:类装载器子系统

    0. JVM架构图 Java虚拟机主要分为五大模块:类装载器子系统.运行时数据区.执行引擎.本地方法接口和垃圾收集模块. 1. 类的加载 虚拟机类装载器子系统:虚拟机把描述类的数据从class文件加载 ...