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)源码下载(推荐,自己编译最稳)

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 → x86
  • CMAKE_INSTALL_PREFIX → 最终头文件 / 库文件安装目录

3)生成成功会看到:

plaintext

-- Generating done
-- Build files have been written to: ...

三、编译 + 安装(输出头文件、libdll

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.hMQTTClient.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.libWindows 网络库,必须加

五、最简测试代码(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 目录(最快,推荐)

  1. 找到你编译出来的 paho-mqtt3c.dll 文件(通常在 paho_install/bin 目录下)。
  2. 把这个文件复制到你的 VS2015 项目的输出目录,也就是 Client.exe 所在的文件夹(通常是 DebugRelease 文件夹)。
  3. 重新运行程序,错误就会消失。

⚙️ 方案 2:添加 DLL 目录到系统 PATH(一劳永逸)

  1. 找到 paho-mqtt3c.dll 所在的文件夹(例如 C:\Users\NELD\Desktop\tools\Mqqt\paho_install\bin)。
  2. 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」。
  3. 在「系统变量」里找到 Path,点击「编辑」。
  4. 点击「新建」,粘贴上面的路径,然后一路点击「确定」保存。
  5. 重启 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 项目配置整理成一个一次性可用的模板吗?

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐