win10下 Qt使用protobuf

编译环境: Win10 x64
编译器: mingw32 cmake
使用场景: Qt5.11.1

protobuf源码下载地址:https://github.com/google/protobuf

参照:https://blog.csdn.net/qq_24894347/article/details/82966217

1、下载protobuf源码,并且安装cmake。

      我下载了cmake-3.13.0-rc1-win64-x64.msi版本,直接点击安装,大家也可以下载.zip版本。zip版本直接解压,不用进行安装。

然后将cmake/bin和Qt/tools/mingw***/bin所在的路径添加到path环境变量中。

2、打开安装的cmake-gui.exe文件,或者直接打开桌面上CMake (cmake-gui)快捷键。点击Browse Source选取protobuf源码的路径下的cmake文件夹,然后新建一个build文件夹,用来存放生成的库,并且通过Browse build来添加,如下所示:

3.接着点击Configure,在下拉选择框中选取MinGW Makefiles

4.继续点击Configure后,可能会出现下面情况,这里直接将BUILD_TESTS一项取消来跳过生成tests

5.重新点击Configure,会看到下方出现Configuring done,再点击Generate,会出现Generating done。而在build文件夹中会出现下面文件。这样就生成了makefile文件

6、在cmd中,用mingw32来编译。编译成功后会在build目录下生成libprotobuf.a、libprotobuf-lite.a、libprotoc.a、protoc.exe这四个文件。

注:等待完成[  100%]进度后才可以,有的版本可能生成的protoc.exe文件显示“不能找到入口”提示,我们可以直接下载

protoc-3.6.1-win32.zip版本文件,其中解压之后就有“protoc.exe文件”,可以代替使用。

7.由于在使用protobuf时要先构建一个proto文件,然后生成对应的头文件和源文件,才能够使用。所以在build文件中构建protobuild.bat脚本文件,在里面添加如下内容。然后将build文件路径添加到环境变量中。如果想要生成某个proto文件对应的头文件和源文件,可以在cmd进入到proto文件所在目录下,输入protobuild *****.proto来进行生成。

8、调试示例

    建立config.proto文件,放在build文件夹下,代码如下:

syntax = "proto3";  

package config;   

message VoiceConfig{  

  int32 sample_rate = 1;  

  int32 mic_num = 2;  

  string voiceserver_address = 3;  

  int32 wakeup_sensitivity = 4 ;  

  int32 bargein_sensitivity = 5;  

  int32 audo_outtype = 6;  

}  

生成 config.pb.h 和 config.pb.cc 建立一个Qt项目

其中主函数中代码如下:


#include <QCoreApplication>
#include <QDebug>
#include <QString>
#include <string>
#include <config.pb.h>

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()<<"size:"<<sdata.size();

    config::VoiceConfig de;
    de.ParseFromString(sdata);
    qDebug()<<"sample_rate:"<<de.sample_rate();
    qDebug()<<"address:"<<QString::fromStdString(de.voiceserver_address());
    qDebug()<<"wakeup_sensitivity:"<<de.wakeup_sensitivity();

    return a.exec();

}

然后我们还需要配置一下头文件和protocolbuffer的库文件

在.pro 文件中加入

INCLUDEPATH += "C:\******\*******\protobuf-3.6.1\src"

然后将libprotobuf.a库文件进行导入

其中,链接选择“静态”,只选择Windows。

最后运行结果如下:

大功告成!

猜你喜欢

转载自blog.csdn.net/jamin_liu_90/article/details/83244335