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

  

相關文章
相關標籤/搜索