递归火山软件开发平台

标题: 【MQTT】源码24-12-30更新 [打印本页]

作者: wangvoldp    时间: 2024-8-12 03:43
标题: 【MQTT】源码24-12-30更新
本帖最后由 wangvoldp 于 2024-12-30 03:04 编辑

使用的paho的mqtt
地址: https://GITHUB.com/eclipse-paho/paho.mqtt.c
里面已经编译好了32和64位的动态库和静态库, 也可以自己编译, 下面有方法
2024-12-30官方文档地址失效了, 模块里我换成最新的了,这次带例子一起发布
服务器用的emqx免费的服务器,
运行两个exe都连接后,一个订阅,一个发布,订阅的那个也可以收到消息
不管多少人只要订阅的主题相同, 都能同时收到消息

修复编译提示缺少 vector 的错误
修复连接失败出错的BUG
发布,订阅,取消订阅加入同步方法
修改 等待完成 防止多线程下访问UI卡死的问题
修复 断开 参数错误的问题
(, 下载次数: 25)

2024-08-15
添加了异步库能实现同步库的全部功能加入了 置遗嘱, 自动重连功能
注释了同步库, 有需要的可以参考下


【编译方法】
1.安装Visual Studio
我使用的是Visual Studio 2019

2.下载mqtt
https://GITHUB.com/eclipse/paho.mqtt.c

3.安装cmake-gui
https://GITHUB.com/Kitware/CMake/releases/
下载并安装cmake-3.30.2-windows-x86_64.msi

4.打开cmake-gui
点第一行【Browse Source...】按钮, 选择 mqtt 根目录下的src目录
点第三行【Browse Build...】按钮, 选择 mqtt 根目录下的build目录(新建)
点左下角【Configure】按钮, 第一次会弹出一个窗口,让选择 vs 版本, 按自己的vs版本选择, 第二行选平台
编译32位就选win32, 64位就选x64, 然后点下面【Finish】按钮,
中间出现列表给【PAHO_BUILD_STATIC】打钩, 点【Generate】按钮生成vs项目

5.打开 mqtt 根目录下的build目录下的vs项目文件, 选好release模块, 点解决方案里的项目右键生成吧
paho-mqtt3a 是异步库的dll
paho-mqtt3c 是同步库的dll
paho-mqtt3a-static 是异步库的静态库
paho-mqtt3c-static 是同步库的静态库




作者: 山梦    时间: 2024-8-12 07:59
大佬威武
作者: itismine    时间: 2024-8-12 09:11
学习一下。
作者: nurjay    时间: 2024-8-12 17:02
学习一下

作者: hq881128    时间: 2024-8-12 18:13
有用在项目上吗

作者: wangvoldp    时间: 2024-8-12 22:06
本帖最后由 wangvoldp 于 2024-8-12 22:11 编辑
hq881128 发表于 2024-8-12 18:13
有用在项目上吗

昨天刚封装的还热乎的,跑了一天测试暂时还没问题, 毕竟是别人开源的东西,我只是做了个接口,
或者再等等吧最近几天就会用上,到时看看效果
作者: wangvoldp    时间: 2024-8-15 23:30
2024-08-15  添加了异步库能实现同步库的全部功能加入了 置遗嘱, 自动重连功能
作者: szychaa60    时间: 2024-8-16 13:06
可以增加ssl版本吗
作者: hq881128    时间: 2024-8-16 14:44
都搞成这样了,搞全买给吴总。
作者: 高山!&流水    时间: 2024-8-16 16:49
感谢分享!!!
作者: heiye    时间: 2024-8-29 23:16
怎么用这个?
作者: wangvoldp    时间: 2024-8-31 14:32
heiye 发表于 2024-8-29 23:16
怎么用这个?

连接MQTT用的,参考下面的免费服务吧
https://www.emqx.com/zh/mqtt/public-mqtt5-broker
作者: zgj9911    时间: 2024-9-28 21:57
断开()有问题,用不了
作者: 928120509    时间: 2024-11-1 15:46
大佬,你好, 调用之后出现出现问题
作者: 928120509    时间: 2024-11-8 16:44
大佬,有没有调用例子
作者: kca    时间: 2024-12-28 21:32
大佬,无法编译,
--- 开始编译项目"mqtt"(请不要在中途拔出加密狗):
载入全局翻译词库文件"default_tlib.txt"成功,其中共有 53 个有效词条.
编译生成对应的C++源文件到目录"E:\debug\mqtt\mqtt\release\win32\project\"成功 [双击可跳转]
正在链接生成目标文件"E:\debug\mqtt\mqtt\release\win32\linker\mqtt.exe"
所编译程序位数: 32; 所使用 VS 本地编译器版本: 16; 所使用 Windows SDK 版本: 10
正在进行本地编译和链接工作(如果是首次编译,由于需要初始化编译环境和相关缓存,速度稍慢是正常的)
错误: 使用所指定的本地编译器编译当前程序失败
<G:\my_soft\火山-20230903\mqtt\MQTT 2024-08-15\mqtt.v>, 136: 错误:
    error C2039: "vector": 不是 "std" 的成员
    D:\voldev\plugins\vprj_win\sdk\compiler\normal\VC\Tools\MSVC\14.29.30133\include\type_traits(21): note: 参见“std”的声明
    error C2065: “vector”: 未声明的标识符
    error C2039: "pair": 不是 "std" 的成员
    D:\voldev\plugins\vprj_win\sdk\compiler\normal\VC\Tools\MSVC\14.29.30133\include\type_traits(21): note: 参见“std”的声明
    error C2065: “pair”: 未声明的标识符
    error C2065: “hs”: 未声明的标识符
    error C2275: “CU8String”: 将此类型用作表达式非法
    D:\voldev\plugins\vprj_win\classlib\sys\base\libs\win_base\include\_vol_str_class_impl.h(16): note: 参见“CU8String”的声明
<G:\my_soft\火山-20230903\mqtt\MQTT 2024-08-15\mqtt.v>, 142: 错误:
    error C2065: “hs”: 未声明的标识符
    error C2039: "make_pair": 不是 "std" 的成员
    D:\voldev\plugins\vprj_win\sdk\compiler\normal\VC\Tools\MSVC\14.29.30133\include\type_traits(21): note: 参见“std”的声明
    error C3861: “make_pair”: 找不到标识符
<G:\my_soft\火山-20230903\mqtt\MQTT 2024-08-15\mqtt.v>, 144: 错误:
    error C2065: “hs”: 未声明的标识符
    error C3078: 必须在没有初始化表达式的新表达式中指定数组大小
<G:\my_soft\火山-20230903\mqtt\MQTT 2024-08-15\mqtt.v>, 145: 错误: error C2065: “hs”: 未声明的标识符
<G:\my_soft\火山-20230903\mqtt\MQTT 2024-08-15\mqtt.v>, 146: 错误: error C2065: “hs”: 未声明的标识符
<G:\my_soft\火山-20230903\mqtt\MQTT 2024-08-15\mqtt.v>, 147: 错误: error C2065: “hs”: 未声明的标识符
编译生成目标文件"E:\debug\mqtt\mqtt\release\win32\linker\mqtt.exe"失败
--- 项目"mqtt"编译或链接失败. 编译过程中共遇到了 0 个警告, 7 个错误.

作者: wangvoldp    时间: 2024-12-30 03:04
heiye 发表于 2024-8-29 23:16
怎么用这个?

最新的已经加入例子了
作者: wangvoldp    时间: 2024-12-30 03:05
kca 发表于 2024-12-28 21:32
大佬,无法编译,
--- 开始编译项目"mqtt"(请不要在中途拔出加密狗):
载入全局翻译词库文件"default_tlib.t ...

下最新的吧, 带例子改好了
作者: wangvoldp    时间: 2024-12-30 03:07
928120509 发表于 2024-11-8 16:44
大佬,有没有调用例子

下最新的吧, 带例子了
作者: wangvoldp    时间: 2024-12-30 03:08
zgj9911 发表于 2024-9-28 21:57
断开()有问题,用不了

最新的已修复
作者: amwji    时间: 2024-12-30 08:14
火山有你更精彩
作者: kca    时间: 2024-12-30 08:47
给大佬点赞
作者: 199    时间: 2025-3-5 10:40
正好用到,有没有商用的,稳定吗
作者: zgj9911    时间: 2025-3-14 19:09
同一台电脑运行两个都带有nqtt异步库的窗口程序,运行一段时间,后启动那个程序会直接闪退
作者: Snail    时间: 2025-3-14 20:05

学习一下
作者: wangvoldp    时间: 2025-3-15 23:42
zgj9911 发表于 2025-3-14 19:09
同一台电脑运行两个都带有nqtt异步库的窗口程序,运行一段时间,后启动那个程序会直接闪退 ...

那你先运行一个编译好的exe, 在调试运行一个程序, 等他出错看错误代码是什么




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4