【C++使用grpc】

C++使用Grpc库

开发环境

  • Windwos10操作系统
  • Visual Studio2022 Professional

缘由

某项目需求,需要给客户提供c++的grpc使用demo,且要用MFC开发前端界面。在整个过程中,除了MFC使用了一个未注册的空间导致界面无法启动(无法进入OnInitDialog函数)外,大部分问题集中在grpc的编译。

实现方法

  • CMake自行编译源码

如果时间充足,可以自行去官网下载grpc源码,按照readme的提示一步步进行编译,但是过程中较长,且中途还涉及一些第三方库的编译。对该方法感兴趣的小伙伴可以查看链接:在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe

  • 使用vcpkg

由于项目时间需要我放弃了这种方式,转而使用vcpkg工具直接从微软下载编译好的grpc库,这个弊端是这部分是微软官方编译的,可能不是最新的grpc源码编译的结果。
按照 在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe 提及的方法下载完git工具且把grpc源码库拉到本地后,打开最外层目录的readme,按照指引打开和c++相关的指导(shift + 鼠标左键),如下图:
grpc readme
打开另一份readme菜单,按照指引找到文档下部的vcpkg方法,如下图:
vcpkg 下载 grpc
下载完成后,查看vcpkg目录 installed ,如下图:
vcpkg目录
进入目录 installed\x64-windows, 里面有对应的include、lib,我在自己的工程里添加了include和lib文件夹。建议使用静态库。同时要将tools文件夹添加到自己的vs工程根目录下 $(SolutionDir)

进行完上述步骤之后,紧接着就是要编译对应的proto文件,注意:如果proto中有service,那么编译指令里需要使用–grpc_out指令,同时指定plugin。这部分花了我一些时间,主因为是要提供demo,因此需要将proto的编译指令放到vs中,方法如下:
在vs solution tab页中右键proto文件,编译工具选择为customized build tool(自定义工具),如下图所示:
选择自定义编译工具
接着配置自定义工具,如下图:
配置编译工具
可以指定编译后的文件名字,也可以不指定,编译指令如下:
$(SolutionDir)tools\protoc.exe -I=$(SolutionDir)include --plugin=protoc-gen-grpc=$(SolutionDir)tools\grpc_cpp_plugin.exe --grpc_out=. --cpp_out=. xx.proto

但我的建议是自己开发的话,可以直接在tools文件夹中通过cmd命令行执行编译指令,指令如下:

>>cd tools
>>protoc.exe -I=. --plugin=protoc-gen-grpc=grpc_cpp_plugin.exe --grpc_out=. --cpp_out=. xx.proto

注意:如果你的proto文件import了其他的proto,最直接的方式,是把对应的proto文件和你的proto文件放在同一个目录下,或者用-I指令指定目录位置,如 -I=. -I="import proto path" 否则可能会提示找不到对应的引入文件,所谓的引入文件,即在你的proto中import了其他ptoro文件,如下:
import "google/protobuf/empty.proto";

这就要求你的protoc目录下有目录goole->protobuf->empty.proto,注意前缀很重要

执行完成后,你本地就应该生成了grpc.h, grpc.cc, pb.h, pb.cc文件

接着后面可以根据grpc源码文件夹下的example文件夹里的方式去实现grpc服务端和客户端,此处不再赘述。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值