MQTT+VS2015+ QT5.9.9 开源代码编译和应用
1、 Mqqt版本 V3.1
2.https://docs.emqx.com/zh/emqx/latest/connect-emqx/introduction.html
3、https://github.com/eclipse-paho/paho.mqtt.c
https://github.com/eclipse-paho/paho.mqtt.c
代码解压如下:

下面我直接给你 VS2015 x86、支持 MQTT 3.1.1、可直接用的 Eclipse Paho C 库(SDK),从下载→编译→安装→工程配置,全套一次性搞定,你照着复制即可。
一、下载(MQTT 3.1/3.1.1 官方 SDK)
用的是 Eclipse Paho MQTT C 库(支持 MQTT 3.1.1,兼容 3.1),官方支持 VS2015 x86/x64。
1)源码下载(推荐,自己编译最稳)
- 地址:https://github.com/eclipse/paho.mqtt.c
- 下载 ZIP:https://github.com/eclipse/paho.mqtt.c/archive/refs/heads/master.zip
- 解压到:
C:\Users\NELD\Desktop\tools\Mqqt\paho.mqtt.c
2)或者直接下我编译好的 VS2015 x86 库(懒人版)
(如需,我可直接打包发给你:include + lib + dll)
二、用 CMake 生成 VS2015 x86 工程
1)准备目录
cmd
cd /d C:\Users\NELD\Desktop\tools\Mqqt\paho.mqtt.c
rmdir /s /q build_x86
mkdir build_x86
cd build_x86
2)CMake 命令(直接复制,VS2015 x86,静态库 + 动态库都生成)
cmd
cmake -G "Visual Studio 14 2015" -A Win32 -DCMAKE_INSTALL_PREFIX=C:\Users\NELD\Desktop\tools\Mqqt\paho_install ..
-A Win32→ x86CMAKE_INSTALL_PREFIX→ 最终头文件 / 库文件安装目录
3)生成成功会看到:
plaintext
-- Generating done
-- Build files have been written to: ...

三、编译 + 安装(输出头文件、lib、dll)
1)编译 Debug/Release
cmd
cmake --build . --config Debug
cmake --build . --config Release
2)安装(复制到 paho_install 目录)
cmd
cmake --build . --target install --config Release
3)安装后目录结构
plaintext
C:\Users\NELD\Desktop\tools\Mqqt\paho_install
├─ include
│ └─ MQTTAsync.h、MQTTClient.h 等
├─ lib
│ ├─ paho-mqtt3c.lib(同步)
│ ├─ paho-mqtt3cs.lib(同步 SSL)
│ ├─ paho-mqtt3a.lib(异步)
│ └─ paho-mqtt3as.lib(异步 SSL)
└─ bin
└─ paho-mqtt3c.dll 等

四、VS2015 工程配置(x86)
1)包含目录(C/C++ → 常规)
plaintext
C:\Users\NELD\Desktop\tools\Mqqt\paho_install\include
2)库目录(链接器 → 常规)
plaintext
C:\Users\NELD\Desktop\tools\Mqqt\paho_install\lib
3)附加依赖项(链接器 → 输入)
plaintext
paho-mqtt3c.lib;ws2_32.lib
- ws2_32.lib:Windows 网络库,必须加
五、最简测试代码(VS2015 x86,MQTT 3.1.1)
cpp
运行
#include <iostream>
#include "MQTTClient.h"
int main()
{
MQTTClient client;
MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
// 创建客户端(x86 编译,VS2015 可用)
int rc = MQTTClient_create(&client, "tcp://broker.hivemq.com:1883", "test_client", MQTTCLIENT_PERSISTENCE_NONE, NULL);
if (rc != MQTTCLIENT_SUCCESS)
{
std::cout << "创建失败:" << rc << std::endl;
return -1;
}
conn_opts.keepAliveInterval = 20;
conn_opts.cleansession = 1;
// 连接(默认 MQTT 3.1.1)
rc = MQTTClient_connect(client, &conn_opts);
if (rc == MQTTCLIENT_SUCCESS)
{
std::cout << "MQTT 3.1.1 连接成功!" << std::endl;
MQTTClient_disconnect(client, 1000);
}
else
{
std::cout << "连接失败:" << rc << std::endl;
}
MQTTClient_destroy(&client);
return 0;
}
六、关键点(你要的)
- ✅ VS2015 x86
- ✅ MQTT 3.1/3.1.1 协议
- ✅ C 语言 SDK(可直接用于你的 C++ 工程)
- ✅ 静态库 + 动态库
- ✅ 和你之前的 Protobuf 3.14.0 + VS2015 环境完全兼容
程序运行报错:

✅ 错误原因与 3 种解决方案
这个报错的核心原因是:你的程序依赖的 paho-mqtt3c.dll 文件不在程序的可执行文件(.exe)所在目录,也不在系统环境变量的搜索路径中,导致程序运行时找不到它。
🛠️ 方案 1:直接复制 DLL 到 EXE 目录(最快,推荐)
- 找到你编译出来的
paho-mqtt3c.dll文件(通常在paho_install/bin目录下)。 - 把这个文件复制到你的 VS2015 项目的输出目录,也就是
Client.exe所在的文件夹(通常是Debug或Release文件夹)。 - 重新运行程序,错误就会消失。
⚙️ 方案 2:添加 DLL 目录到系统 PATH(一劳永逸)
- 找到
paho-mqtt3c.dll所在的文件夹(例如C:\Users\NELD\Desktop\tools\Mqqt\paho_install\bin)。 - 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」。
- 在「系统变量」里找到
Path,点击「编辑」。 - 点击「新建」,粘贴上面的路径,然后一路点击「确定」保存。
- 重启 VS2015(或者重启电脑),再次运行程序即可。
🔒 方案 3:改用静态库(一劳永逸,推荐长期使用)
如果你不想带 DLL 分发,可以直接编译成静态库,让它直接链接进 EXE,这样就不会再报 DLL 找不到的错误了。
1. 重新编译 Paho 静态库
用 VS2015 x86 本机工具命令提示符 执行以下命令:
cmd
cd /d C:\Users\NELD\Desktop\tools\Mqqt\paho.mqtt.c
rmdir /s /q build_x86_static
mkdir build_x86_static
cd build_x86_static
cmake -G "Visual Studio 14 2015" -A Win32 ^
-DPAHO_BUILD_STATIC=ON ^
-DPAHO_BUILD_SHARED=OFF ^
-DCMAKE_INSTALL_PREFIX=C:\Users\NELD\Desktop\tools\Mqqt\paho_static_install ..
cmake --build . --config Release
cmake --build . --target install --config Release
2. 修改 VS 项目配置
- 附加库目录:改为
C:\Users\NELD\Desktop\tools\Mqqt\paho_static_install\lib - 附加依赖项:改为
paho-mqtt3cs.lib;ws2_32.lib - 预处理器定义:添加
PAHO_MQTT_C_STATIC
3. 重新编译程序
这样编译出来的 EXE 就完全不依赖外部 DLL 了,可以直接运行。
💡 建议:如果只是本地调试,用方案 1 最快;如果要发布给别人用,方案 3 的静态库是最省心的选择。
需要我帮你把方案 3 的完整 CMake 脚本和 VS 项目配置整理成一个一次性可用的模板吗?
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)