怎样在Qt下编译以及使用protobuf?

我们在使用Qt开发做项目开发是时候, 经常会进行数据的跨平台传输, 就需要对数据进行序列化, 序列化的方式有很多, 现在项目开发最常用就是google公司开发的protobuf。今天就给大家详细讲解一下如何在Qt下编译以及使用protobuf。

1. 准备工作

1.1 下载并安装Qt

QT的下载地址,建议使用5.7以上版本:https://download.qt.io/archive/qt/

选择MinGW 版本选择 next 即可完成安装。
 

1.2 下载cmake并安装

Cmake下载地址:https://cmake.org/download/

根据向导使用默认选项设置即可完成安装。
 

1.3 下载protobuf的源码

Protbuf源码下载地址:https://github.com/protocolbuffers/protobuf/releases

选择c++版本源码下载到本地,并解压缩

 
我这里将 压缩包下载到D盘根目录,并解压缩得到目录: D:\protobuf-3.11.4
 

2. 生成protbuf库文件

2.1 cmake的设置与库的生成

找到编译的源为protobuf源码中的cmake文件夹,

 
之后建立输出目录,这里在D盘下创建输出目录output-project,即:D:\output-project,并将其设置为目标文件夹,在cmake中做如下设置:

 
然后点击configure按键,选择MinGW编译,默认的编译器即可,也就是QT自带的编译器,如图所示。

 
点击finish按键,开始配置,配置结束后,界面如下:

在列表中按照下图进行选择
 点击Generate生成,如图所示。

生成结束后,我们发现D:\output-project文件夹中出现了makefile文件,如图所示。

进入D:\output-project文件夹,在该目录下按住shift然后鼠标右键弹出右键菜单,打开命令行窗口,也就是下边截图中的Powershell窗口。
 

 在命令行窗口中输入mingw32-make命令,开始编译源代码,如下图所示。


 

 等待几分钟编译结束。


编译结束后,我们打开D:\output-project文件夹可以看到生成的库文件和protoc.exe。如下图所示。


 

 3. 在QT中配置protobuf

创建Qt项目,在项目的pro文件中添加如下设置:

protobuf的头文件目录和库目录说明:

1. 根据上边的配置头文件在D:\protobuf-3.11.4\src目录中

a) 头文件在源码目录的src目录中

2. 动态库目录在D:\output-project中

3. 动态库的名字为 libprotobuf.dll在指定的时候

a) –L: 动态库的绝对路径

b) –l:动态库的名字,需要掐头(lib)去尾(dll)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt使用Protocol Buffers(protobuf)库,可以通过以下步骤进行: 1. 首先,确保你已经安装了Protocol Buffers库。可以从https://developers.google.com/protocol-buffers/下载并安装最新版本。 2. 在你的Qt项目中创建一个.proto文件,用于定义你的消息结构。例如,创建一个名为message.proto的文件,并在其中定义你的消息格式,如下所示: ```protobuf syntax = "proto3"; package mypackage; message MyMessage { string name = 1; int32 age = 2; } ``` 3. 使用Protocol Buffers编译器将.proto文件编译成对应的C++代码。打开命令行终端,并导航到包含.proto文件的目录中,然后执行以下命令: ``` protoc --cpp_out=. message.proto ``` 这将生成一个名为message.pb.h和message.pb.cc的文件,包含了你的消息的C++定义。 4. 在你的Qt项目中创建一个新的类,用于使用protobuf消息。例如,创建一个名为MyMessageHandler的类,并在其中添加以下代码: ```cpp #include "message.pb.h" class MyMessageHandler { public: void processMessage(const std::string& data) { MyMessage message; message.ParseFromString(data); // 处理消息 qDebug() << "Name: " << QString::fromStdString(message.name()); qDebug() << "Age: " << message.age(); } }; ``` 5. 在你的Qt项目中使用protobuf消息。例如,在你的Qt应用程序中的某个地方,可以这样使用MyMessageHandler类: ```cpp MyMessageHandler handler; // 假设你从网络或其他来源接收到了一段数据 std::string receivedData = ...; handler.processMessage(receivedData); ``` 这样,你就可以在Qt使用Protocol Buffers库来处理和解析protobuf消息了。记得在编译时链接Protocol Buffers库,并将生成的.pb.cc文件添加到Qt项目中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值