VS2019编译MQTT库 C/C++(超详细,含示例工程)

目录

前言

一、前期准备

1.1 获取mqtt库

1.2 安装openssl

1.3 安装cmake-gui

二、生成C工程代码

三、编译C库

3.1 创建工程目录

3.2 修改输出目录

四、生成C++工程代码

五、编译C++库

5.1 创建工程目录

5.2 修改输出目录

六、新建MQTT工程

6.1 创建文件夹

6.2 拷贝所需头文件和库文件

七、配置工程

7.1 配置预处理器

7.2 包含头文件目录

7.3 包含lib目录

7.4 添加依赖项lib库

八、报错

8.1 没有正确配置预处理器

8.2 缺少paho-mqttpp3.lib

8.3 缺少ws2_32.lib库

8.4 找不到paho-mqttpp3.dll

九、参考资料

十、示例工程下载


前言

最近C++编程,需要用到mqtt,之前python编程时用到的mqtt库时paho的,于是乎,上GitHub找了paho的mqtt的c源码库。

编程环境:win10

工具:Visual Studio 2019

由于网上看到的教程是VS2015的,没有VS2019的,而且好像编译过程也有点不一样,因此写下这篇笔记,当作给自己的记录。也可以给其他人参考一下。

一、前期准备

1.1 获取mqtt库

先git clone下来GitHub - eclipse/paho.mqtt.c: An Eclipse Paho C client library for MQTT for Windows, Linux and MacOS. API documentation: https://eclipse.github.io/paho.mqtt.c/

GitHub - eclipse/paho.mqtt.cpp

我把源码下载在F:/学习笔记/C++/目录下,这里时两个库,一个是C源码库,一个是cpp源码库,cpp源码库的编译要基于c源码库。

1.2 安装openssl

Windows要安装openssl,选择开发人员版本的openssl进行下载(即那个比较大的安装包)

https://slproweb.com/download/Win64OpenSSL-1_1_1d.exe

我把openssl安装在C:/Program Files/OpenSSL-Win64/


PS:

 

根据粉丝私聊我要上述openssl安装包后,成功跑通本教程,才发现,这里有个openssl的报错是要用到这个对应的openssl才能解决。

鉴于上面这个openssl版本已经下载不了,我已经把对应的程序下载链接放出来

有积分的同学,请戳

openssl_1.1.1d.zip-网络安全文档类资源-CSDN下载

没有积分的同学,请戳

https://pan.baidu.com/s/1me6ayn7PYi6NHER5miOGOQ 提取码:c7iy


1.3 安装cmake-gui

安装包地址

https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-win64-x64.msi

二、生成C工程代码

源码目录选择,paho.mqtt.c目录,F:/学习笔记/C++/mqtt/paho.mqtt.c

源码生成build目录选择你自己要生成的目录路径,这里我是在源码目录下新建了一个build目录

F:/学习笔记/C++/paho.mqtt.c/build

选择好路径之后,点击“configure”

按下图打勾,然后点击“configure”

会报错如下

这是因为缺少openssl的路径,如下图,添加好openssl对应的文件目录

OPENSSL_CRYPTO_LIB=C:/Program Files/OpenSSL-Win64/lib/libcrypto.lib

OPENSSL_INCLUDE_DIR=C:/Program Files/OpenSSL-Win64/include

OPENSSL_LIB=C:/Program Files/OpenSSL-Win64/lib/libssl.lib

C:/Program Files/OpenSSL-Win64/是我的openssl安装目录

选择完成后重新“Configure”就不会报错了,然后接着点“Generate”

你会发现在你的build目录下已经生成了一个工程了。

三、编译C库

3.1 创建工程目录

在源码目录下创建新的文件夹install/bin/

既是F:\学习笔记\C++\paho.mqtt.c\install\bin

所有生成的文件都放在\install\bin

3.2 修改输出目录

双击打开Eclipse Paho C.sln

然后右键每个子项目,把路径给修改成为刚刚新创建的install/bin/这个目录下面,当然你可以自定义你的目录,但是必须确保你的输出文件都在同一个目录下面。

配置完成之后右键All Build进行生成

在此处打开powershell窗口,运行MQTTVersion.exe

在原来的窗口输入.\paho_c_sub.exe -t "baiyu" -h test.mosquitto.org

新建一个窗口,输入.\paho_c_pub.exe -t "baiyu" -h test.mosquitto.org

然后新窗口发送的数据可以直接在原来窗口接收到。

至此,paho-mqtt-c库和例程编译完成。

四、生成C++工程代码

生成C++工程代码与生成C工程代码方法类似。都是在原来的源代码目录下面新建一个build目录

会报错如下图所示,这是因为生成C++库需要用到上面生成的C的lib库

F:/学习笔记/C++/paho.mqtt.c/src 这个目录是源码头文件的库

F:/学习笔记/C++/paho.mqtt.c/install/bin/paho-mqtt3as.lib   这个lib是c编译出来的库

然后点击“Generate”进行生成

五、编译C++库

5.1 创建工程目录

同样是在源代码目录下面新建一个install/bin目录

5.2 修改输出目录

然后打开工程paho-mqtt-cpp.sln

修改完毕进行All build进行编译生成

设为启动项目

运行后会在等待消息的到来,打开咱们一开始的那个发布消息的窗口,发送消息,你就可以收到了,这说明你的C++客户端编译成功了。

六、新建MQTT工程

6.1 创建文件夹

进入工程目录下

include目录下新建两个文件夹

6.2 拷贝所需头文件和库文件

在lib目录下,

添加paho-mqtt3as.lib

添加paho-mqttpp3.lib

七、配置工程

7.1 配置预处理器

7.2 包含头文件目录

7.3 包含lib目录

7.4 添加依赖项lib库

新建文件,然后把paho.mqtt.cpp的async_consume.cpp源码拷贝过来,右键生成,进行编译

然后调试运行

说明新建的工程起作用了!!!

自己要调用mqtt的库就这么做即可。

八、报错

8.1 没有正确配置预处理器

配置好预处理器 “WIN64”即可

8.2 缺少paho-mqttpp3.lib

错误,LNK2019 无法解析的外部符号 "public: __cdecl mqtt::connect_options::connect_options(void)" (??0connect_options@mqtt@@QEAA@XZ),该符号在函数 main 中被引用

问题:缺少paho-mqttpp3.lib

解决方法:文件最开始的位置添加#pragma comment(lib, " paho-mqttpp3.lib ")

或者“右键工程->属性->链接器->输入->附加依赖项”

8.3 缺少ws2_32.lib库

错误      LNK2019      无法解析的外部符号 __imp_htons,该符号在函数 WebSocket_close 中被引用

解决方法:在文件最开始的位置添加#pragma comment(lib, "ws2_32.lib")

或者“右键工程->属性->链接器->输入->附加依赖项”

8.4 找不到paho-mqttpp3.dll

解决方法:

在你编译cpp源码时,会生成paho-mqttpp3.dll

我的paho-mqttpp3.dll所在目录是

F:\学习笔记\C++\paho.mqtt.cpp\install\bin

九、参考资料

MQTT什么鬼?第四讲:编译Paho C Windows客户端 – 砖瓦匠

十、示例工程下载

鉴于有些小伙伴编译不成功,故把工程打包上传,供大家学习交流。不过,我还是希望大家能按着教程自己动手编译一次。

教程中的编译好的C库工程:

VS2019编译完成的paho.mqtt.c库_paho.mqtt.c编译-C代码类资源-CSDN下载

教程中的编译好的C库工程:

VS2019编译完成的paho.mqtt.cpp库_paho-mqtt-c编译使用-C++代码类资源-CSDN下载

没有积分下载的小伙伴请戳下面的链接:

GitHub - BaiYu96/VS2019_paho.mqtt.c: This is a VS2019 project of the paho.mqtt.c

GitHub - BaiYu96/VS2019_paho.mqtt.cpp: This is the paho.mqtt.cpp project compiled by VS2019.

当然,我希望有积分的小伙伴支持一下我,嘻嘻,觉得有帮助就给我点个赞,或者留个言吧~

评论 106
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻城狮白玉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值