当前位置: 代码迷 >> 综合 >> qt安装qmatt库的步骤,亲身经历,记录一下
  详细解决方案

qt安装qmatt库的步骤,亲身经历,记录一下

热度:77   发布时间:2024-01-25 08:32:41.0

前几天想在win10电脑上模拟一下物联网终端连接阿里云,本来是要找个软件工具试试的,结果都要交费。。。没找到合适的!

ε=(?ο`*)))唉,只能自己动手了。想了一下,比较愿意用QT(我的版本是5.9.8)做一个,QT界面做起来简单一些,最近用的也比较多,各方面都觉得QT还阔以的。可是,阿里云没提供C++的sdk,有个C的,估计捣鼓捣鼓也能用,不过我没用,我想直接用qmqtt库。其实协议都是一样的,阿里云的稍作改动而已。决定了就去做吧!去吧~皮卡丘!

先装个qmqtt的库。前端时间装了个QSciscintilla控件,当时直接上命令行,啪啪啪啪啪~好不痛快!到现在还记忆犹新,一开始没在网上找教程,我准备用命令行方式编译一下。下面是过程(回忆版本,已经过去两天了,O(∩_∩)O哈哈~):

1、先下载这个库

有了!下面是github的连接(复制到浏览器直接下载),是在网上瞎逛找出来的,我第一次看到这个github链接忘记在哪里了,这个博客上也推荐俩链接:https://blog.csdn.net/yimuta9538/article/details/103885510。闲话不说,下载了!

https://codeload.github.com/emqx/qmqtt/zip/master

2、观察一下结构

大概就这样,不过我这个是已经编译过了的,所以跟刚下载不一样,各方面的,先探索一下。

3、用命令行编译

命令行编译其实很爽,因为我前段时间详细了解了一下QT的编译过程,所以心理有点得意。我就在这个qmqtt-master这个文件夹里面启动了cmd命令窗口。我就不把编译截图放上来了,占地方太大了。我用了下面的命令:

qmakemingw32-makemingw32-make install

上面这是release编译,还要进行一遍debug编译(因为qmake默认是release模式),继续下面命令:

qmake CONFIG+=debugmingw32-makemingw32-make install

这就编译完了,接下来寻思寻思怎么用吧。

4、准备qmqtt库的文件

这个真的费了挺大劲的!这是写这个博客最主要的原因!请一定仔细看好了。我本来参照了这个博客:https://blog.csdn.net/qq_28877125/article/details/78357510?locationnum=6&fps=1。后来发现不行,只能自己摸索,修改文件。

首先我们要把编译好的库文件收集起来,放到两个文件夹里面也就是上面我截图那里,“调用qmqtt需要的文件夹”那个文件夹(那是我自己备用的)。命令执行没问题的话(有问题估计就是工具没装好、环境变量设置对之类的,百度很容易解决),请新建两个文件夹“include”和“lib”,然后把编译生成的文件放进去(一定要注意!我的图里面的文件跟别人的可能不太一样,因为我用的是QT5.9.8),具体哪些,我给大家截图:

*1、**这是include文件夹里面的,全是头文件,这些头文件的来源是:XXX\qmqtt-master\src\mqtt。qmqtt那个文件夹里面是QtQmqttDepends,这个qmqtt文件夹的来源是:XXX\qmqtt-master\include。

 

 

*2、**这是lib文件夹里面的,编译生成的四个库文件,这4个文件来源是:XXX\qmqtt-master\lib。这里要注意,根据你自己编译的结果来判断,不要照抄我的文件名字,名字根据版本不同会有差异,但是一共就两个.a和两个.dll文件,复制过来就可以。

*3、**搞定了这两个文件夹之后,就把这两个文件夹复制到你qt工程的根目录下面。

5、调用qmqtt库

这里我走了一些弯路,不解释了,直接把工程文件和头文件复制上来,注释一下。

*1、**首先是工程文件

QT       += core gui network  #这里一定要加network!!!greaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = Iot
TEMPLATE = app# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
LIB += QMQTT# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0CONFIG += c++11SOURCES += \main.cpp \mainwindow.cppHEADERS += \mainwindow.h \FORMS += \mainwindow.uiwin32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lQt5Qmqtt   #这里注意最后的名字,跟你编译的库名字一样!(lib文件夹里面的)
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lQt5Qmqttd#这里注意最后的名字,跟你编译的库名字一样!(lib文件夹里面的)INCLUDEPATH += $$PWD/include  #复制上去,就是添加路径
DEPENDPATH += $$PWD/include   #复制上去,就是添加路径#下面这个判断都要注意最后的名字,跟你编译的库名字一样!(lib文件夹里面的)
win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/lib/libQt5Qmqtt.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/lib/libQt5Qmqttd.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/lib/Qt5Qmqtt.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/lib/Qt5Qmqttd.lib# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

*2、**下面是.cpp文件中的调用

在头文件中添加下面的引用就可以了。

#include "qmqtt.h"

看上图,调用一切正常,安装成功!

                                                                           ~~~完结撒花~~~~