Windows+VS2017使用gRPC

gRPC官方Windows安装说明:git

  • 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上的包管理工具)来安装。github

准备环境golang

       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等ui

  

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

  

  

  

下载gRPC源码.net

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

  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

  

相关文章
相关标签/搜索