Qt GRPC Windows+Linux使用-含史上最靠谱的Demo

目录

前言

1、Windows系统 VS2019工程,附带grpc库文件

2、Linux系统QtCreator工程,附带grpc库文件

2.1 Linux系统下环境的配置

2.2 Linux环境测试

3、GRPC相关博客


前言

        编译GRPC是一件非常辛苦的事情,本人在Windows系统VS2019环境下编译源码到demo正常运行用了一周时间,Linux系统下编译源码再到demo正常运行又是一周时间。编译grpc源码,大家已经再网上分享了很多帖子,其实都非常好,那么我就再没必要分享GRPC的编译了。

        但是几乎搜遍了全网,都没找到一份可以100%跑起来的Demo,所以针对此空白地带,特写一篇博客,旨在分享可运行的Demo,让大家跳过源码的编译,直接上手使用GRPC.

        最近有好多人私信我,希望帮助编译grpc库,没有及时看到信息。先将本人邮箱留下,有问题伙伴可以发送邮件,会在第一时间看到。邮箱:1255450653@qq.com.

windows系统下编译源码参考网站:

        自己编写的,最靠谱:https://blog.youkuaiyun.com/ManagerUser/article/details/126736076?spm=1001.2014.3001.5502https://blog.youkuaiyun.com/ManagerUser/article/details/126736076?spm=1001.2014.3001.5502

参考1:windows系统c++/VS2019编译gRPChttps://blog.youkuaiyun.com/w13l14/article/details/118155498
参考2:windows平台下编译gRPC的坎坷之路和解决方法附上编译好的lib和头文件下载https://blog.youkuaiyun.com/liyangbinbin/article/details/100134465
参考3:Visual Studio环境编译和使用grpc框架参考链接:https://blog.youkuaiyun.com/weixin_28927079/article/details/97262243作者:melon-gagagRPC 是一个高性能、通用的开源RPC框架,其由 Google 主要面向移动应用开发并基于HTTP/2 协议标准而设计,基于 ProtoBuf(Protocol Buffers) 序列化协议开发,且支持java、C++、C#等众多开发语言。本文根据csdn博主“melon-gaga”的《gRPC源码编译和使用(windows+vs.<

### 如何在 Qt 中集成或使用 gRPC 要在 Qt 应用程序中集成或使用 gRPC,可以通过以下方式实现: #### 1. 使用 C++ 实现 gRPC 客户端和服务端 gRPC 提供了对多种编程语言的支持,其中包括 C++。因此可以直接利用 gRPC 的 C++ SDK 来开发基于 Qt 的应用程序。 安装 gRPCProtobuf 工具链后,在项目的 `.pro` 文件中配置必要的库路径和头文件位置[^5]: ```plaintext INCLUDEPATH += /path/to/grpc/include LIBS += -L/path/to/grpc/lib -lgrpc++ -lprotobuf ``` 编写 proto 文件并生成对应的 C++ 类型定义代码。例如,假设有一个简单的 `hello.proto` 文件: ```proto syntax = "proto3"; service Greeter { rpc SayHello (HelloRequest) returns (HelloReply); } message HelloRequest { string name = 1; } message HelloReply { string message = 1; } ``` 通过运行 `protoc --cpp_out=. --grpc_out=. --plugin=protoc-gen-grpc=` 命令生成所需的 C++ 接口类。 接着可以在 Qt 项目中实例化这些接口,并调用远程过程方法。以下是服务端的一个简单示例: ```cpp #include <iostream> #include <memory> #include <string> #include <grpcpp/ext/proto_server_reflection_plugin.h> #include <grpcpp/health_check_service_interface.h> #include <grpcpp/server_builder.h> #include <generated_code/hello.grpc.pb.h> // 替换为实际生成的头文件名 class GreeterServiceImpl final : public helloworld::Greeter::Service { public: grpc::Status SayHello(grpc::ServerContext* context, const helloworld::HelloRequest* request, helloworld::HelloReply* response) override { std::string prefix("Hello "); response->set_message(prefix + request->name()); return grpc::Status::OK; } }; void RunServer(const std::string& address) { std::unique_ptr<grpc::Server> server; GreeterServiceImpl service; grpc::ServerBuilder builder; builder.AddListeningPort(address, grpc::InsecureServerCredentials()); builder.RegisterService(&service); server = builder.BuildAndStart(); std::cout << "Server listening on " << address << std::endl; server->Wait(); } ``` 对于客户端部分,则需创建一个 stub 并发起 RPC 请求[^6]: ```cpp std::shared_ptr<grpc::Channel> channel = grpc::CreateChannel("localhost:50051", grpc::InsecureChannelCredentials()); auto stub = helloworld::Greeter::NewStub(channel); helloworld::HelloRequest request; request.set_name("World"); helloworld::HelloReply reply; grpc::ClientContext context; grpc::Status status = stub->SayHello(&context, request, &reply); if (status.ok()) { qDebug() << QString::fromStdString(reply.message()); } else { qWarning() << "Error:" << status.error_message().c_str(); } ``` #### 2. 利用第三方工具简化流程 除了手动构建外,还可以考虑一些已经封装好的框架或插件来加速开发进程。比如 [qtgrpc](https://github.com/SimpleAppTools/qtgrpc),这是一个专门为 Qt 设计的 gRPC 绑定库,能够帮助开发者更方便地完成网络通信功能模块的设计与部署工作[^7]。 #### 3. 示例资源推荐 如果希望找到更多具体案例学习的话,可以从以下几个方面入手寻找资料: - GitHub 上搜索关键词 “Qt gRPC”,会发现不少开源项目可供参考; - 查阅官方文档以及社区贡献的技术博客文章; - 加入相关论坛讨论组提问交流经验心得等。 --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值