• Windows+VS2017使用gRPC


    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 例子位于.grpcexamplescpphelloworld

      在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:LearningOpensourceLibgRPCgrpc_plugsgrpc.buildDebuggrpc_cpp_plugin.exe " "./protoshw.proto"

      protoc -I="./protos" --cpp_out="./protos" "./protoshw.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

      

  • 相关阅读:
    京东咚咚架构演讲读后感
    京东峰值系统设计读后感
    游戏服务器的架构演讲读后感
    菜鸟弹性调度系统的架构设计读后感
    阿里如何实现秒级百万TPS?搜索离线大数据平台架构解读读后感
    阿里游戏高可用架构设计实践读后感
    淘宝架构背后——零售业务中台架构设计探讨及实践读后感
    本地存储的时候需要类型转换
    禁止输入框显示用户历史输入历史记录
    项目必备!永无 bug 注释
  • 原文地址:https://www.cnblogs.com/MakeView660/p/11511136.html
Copyright © 2020-2023  润新知