目录

前言

一、前期准备

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.

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

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

  1. 【转】Android下编译jni库的二种方法(含示例) -- 不错

    原文网址:http://blog.sina.com.cn/s/blog_3e3fcadd01011384.html 总结如下:两种方法是: 1)使用Android源码中的Make系统 2)使用NDK( ...

  2. msp430流水灯c语言程序,超详细msp430示例程序汇编.doc

    超详细msp430示例程序汇编 一.基础_实验[10个] 1.入门试验:LED闪烁(1个) 2.时钟实验:设置MCLK.ACLK.SMCLK(1个) 3.低功耗实验:设置低功耗模式(1个) 4.IO端 ...

  3. 如何 FFT(快速傅里叶变换) 求幅度、频率(超详细 含推导过程)

    目录 如何 FFT(快速傅里叶变换) 求幅度.频率(超详细 含推导过程) 一. 打颗栗子 二. 求幅度 1. 快速傅里叶变换 2. 求出复数的绝对值 3. 归一化 小结 三. 求频率 1. 频率公式 ...

  4. 使用VS编译mqtt库(一次成功)

    1.编译环境:本人使用的是VS2017(平台工具集V141)进行编译的64位版本.主要区别在于平台工具集,例如我编译完成的库,虽然你可能使用VS2015来进行调用,但是如果你的平台工具集也是V141的 ...

  5. 在Windows下使用vs2019编译libjpeg库

    一.库的编译 1.下载 libjpeg 源码,这里我下载的是 jpegsr9e.zip 2.解压源码 3.进入解压后的目录,找到 makefile.vs 文件,用文本编辑器打开并编辑,找到 语句 #! ...

  6. python学习笔记之numpy库的使用——超详细

    文章目录 NumPy介绍 一.如何创建 1.导入Numpy库,并命名为np: 2.查看版本 3.通过列表创建一维数组: 4.通过列表创建二维数组: 5.创建全为0的二维数组 6.创建全为1的三维数组 ...

  7. STM32平台下官方DMP库6.12超详细移植教程

    前记 Motion Driver官方库:Motion_Driver_6.12 STM32工程源码:STM32F103C8-软件MPU6050(DMP) MPU6050软件I2C驱动,带OLED显示,移 ...

  8. vue - element <upload> 组件批量上传文档,可携带其他表单数据项一同与文件 “手动提交“ 服务器(类似百度文库系统批量上传前端界面与逻辑)超详细教程示例源码,提供界面与逻辑完整源码

    效果图 本示例使用的是 element 组件库,其实什么组件库都行(逻辑是一样),只要你是 vue.js 项目就能使用本教程. 本文实现了 vue + element 使用 upload 组件批量上传 ...

  9. vue3 - 网页大转盘抽奖功能,支持后端接口确定最终奖品,可自定义轮盘宽高、颜色、字号、按钮等等(超详细的示例代码及注释开箱即用,稍微改改就能应用到你的项目中)

    效果图 网上的 vue3 教程非常少,找了几篇代码太乱根本无法改造和使用.. 如下图所示,你可以自己 DIY 转盘的大小位置及样式,中奖的商品由后端接口控制, 代码干净只有核心的功能,注释超级详细新手 ...

最新文章

  1. Postman收费太贵了,我决定用Postwoman...
  2. 【腾讯Bugly干货分享】经典随机Crash之二:Android消息机制
  3. buffer cache 深度解析
  4. php5.2的配置方,Windows IIS PHP 5.2 安装与配置方法
  5. swiper动态加载数据左右切换失效
  6. mysql 最短路经_poj 3613 Cow Relays 经L边的最短路 | 学步园
  7. Golang的4种传递引用类型
  8. Shell命令对整数求和,每行一个?
  9. JDBC如何判断数据库的表是否存在
  10. 著名mybb论坛的汉化步骤
  11. Myeclipse自定义包自动加入
  12. 春季高考计算机专业专业分值,春季高考总分多少 分值分布情况如何
  13. 国二考试报Wps还是c语言,2021 年全国计算机二级增考 WPS Office
  14. 9550电机_电机扭矩计算公式里面的9550*P是怎么得来的?
  15. macOS safari安装第三方插件
  16. 华为云OBS创建对象时以HTTP方式通知订阅终端
  17. 我经常关注的博客 - 黎波 - 博客园
  18. 雅马哈机器人编程讲解_雅马哈机器人RCX编程手册
  19. Unity3D--加载界面、开始界面
  20. 无边落木萧萧下,不尽长江滚滚来。

热门文章

  1. java编程基础学习需要多久的时间
  2. 通过matlab从mp4视频中提取音频wav并保存
  3. husky的仿真建图和导航
  4. Oracle数据库CPU占用过高
  5. 经验总结 黑客入侵网络的50种方法2
  6. [项目过程中所遇到的各种问题记录]编辑器篇——FCKeditor相关知识及各种常见使用问题...
  7. 小米平板刷机shell怎么退_小米平板2如何一键解锁?刷机教程图解
  8. 博客管理系统-软件测试分析报告
  9. 查5G覆盖:中国联通客户端提供查询服务,快看你家门口有5G吗
  10. 边缘计算与云计算的未来