QT中使用MinGW 编译的protobuf库 您所在的位置:网站首页 qt生成库文件 QT中使用MinGW 编译的protobuf库

QT中使用MinGW 编译的protobuf库

#QT中使用MinGW 编译的protobuf库| 来源: 网络整理| 查看: 265

QT中使用MinGW 编译的protobuf库--包含库的生成和使用 0前言 1准备工作 2生成protobuf库文件 3在QT中测试protobuf的使用 4结语

 

0前言

最近要在QT中使用protobuf,于是需要编译protobuf静态库文件,导入qt使用,没想到过程非常曲折,各种报错各种坑,在网上参考了很多文章,最后终于成功了,现在将QT中使用protobuf的整个配置过程都写出来提供给大家,希望能够帮助到大家。

1准备工作

1.1 下载QT并安装 下载QT5.6.0,到D盘的QT文件夹,并且加入系统环境变量 D:\Qt\Qt5.6.0\Tools\mingw492_32\bin;D:\Qt\Qt5.6.0\5.6\mingw49_32\bin;D:\Qt\Qt5.6.0\Tools\mingw492_32\i686-w64-mingw32\bin 1.2 下载cmake3.11.0并安装 在https://cmake.org/download/中下载Cmake 安装到D:\anzhuangbao\cmake-3.11.0-rc1-win32-x86 加入系统环境变量 ;D:\anzhuangbao\cmake-3.11.0-rc1-win32-x86\cmake-3.11.0-rc1-win32-x86\bin 1.3 下载protobuf3.3.0的源码 在https://github.com/google/protobuf/releases中下载3.3.0的源码,如图所示 在这里插入图片描述 就是protobuf-cpp-3.3.0.zip 下载到D盘根目录,解压。

2生成protobuf库文件

2.1 CMAKE的设置与库的生成 打开cmake软件,选择编译的源为protobuf源码中的cmake文件夹,之后在D盘根目录下建立输出目录,为output330,设置为目标文件夹,如图所示。在这里插入图片描述 在这里插入图片描述

然后点击configure按键,选择MinGW编译,默认的编译器即可,也就是QT自带的编译器,这样比较保险,如果本机还有别的MinGW版本,建议不要选,就选QT自带的编译器即可,如图所示。

在这里插入图片描述 点击finish按键,开始配置。配置结束后,点击Grouped和Advance

在这里插入图片描述 点开protobuf列表,只勾选一个MSVC_STATIC_RUNTIME,如下图所示。

在这里插入图片描述 点击Generate生成,如图所示。

在这里插入图片描述 生成结束后,我们发现output330文件夹中出现了makefile文件,如图所示。

在这里插入图片描述 打开cmd,进入output330文件夹,输入mingw32-make命令,开始编译源代码,如下图所示。

在这里插入图片描述 等待几分钟编译结束。

在这里插入图片描述 编译结束后,我们打开output330文件夹可以看到生成的库文件和protoc.exe。如下图所示。

在这里插入图片描述 如果没有生成protoc.exe,则可以到刚才https://github.com/google/protobuf/releases中下载protoc-3.3.0-win32.zip,bin文件中就是这个exe.

在这里插入图片描述

2.2 proto.cpp和.h的生成 在D盘根目录下新建一个文件testData.proto,后缀名为.proto,在文件中输入代码如下:

syntax = "proto3"; package config; message VoiceConfig{ int32 sample_rate = 1; int32 mic_num = 2; }

 

在这里插入图片描述 将之前生成的protoc.exe拷贝到C:\windows\system32中,并重命名为protoc330.exe,如图所示。

在这里插入图片描述 打开cmd,进入D盘根目录,也就是testData所在目录,输入如下命令,可在目录中生成.cpp和.h文件。

在这里插入图片描述

至此,库文件和源文件,头文件都生成完毕了。

3在QT中测试protobuf的使用

3.1 建立工程,配置.pro 建立QT控制台工程,导入生成的.cpp和.h文件,打开.pro文件,配置如下: 在这里插入图片描述 3.2 编写代码测试 在main中输入如下代码,测试结果如下图所示。

#include #include #include #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); config::VoiceConfig vc; QString ipaddr="192.168.0.136"; std::string s = ipaddr.toStdString(); vc.set_sample_rate(32000); vc.set_allocated_voiceserver_address(&s); vc.set_wakeup_sensitivity(50); vc.set_bargein_sensitivity(50); vc.set_audo_outtype(1); std::string sdata=""; vc.SerializeToString(&sdata); qDebug()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有