首页 > 编程语言 >MFC制作MQTT(EMQX)客户端 - 约定、依赖文件放置(附源码)

MFC制作MQTT(EMQX)客户端 - 约定、依赖文件放置(附源码)

时间:2024-07-25 18:28:44浏览次数:17  
标签:MQTTClient MFC mqtt client MQTT 源码 paho

前言全局说明

MFC制作MQTT客户端(附源码)


一、说明

环境:

Windows 7 旗舰版
Visual Studio 2013
CMake version 3.19.8
paho.mqtt.c V1.3.13

二、说明、约定:

说明:
因为 MFC 调用 paho.mqtt.c 的 API 所以,要把编译出来的相关文件,放到MFC的工程中,方便调用

约定:
为了方便后续描述,和读者理解,这里将路径特别说明一下:

MQTT 编译的API 路径
D:\smart-homes\paho.mqtt.c

MQTT 编译的 API 生成的 h 头文件路径
D:\smart-homes\paho.mqtt.c\src

MQTT 编译的 API 生成的 lib 、dll 路径
D:\smart-homes\paho.mqtt.c\src\Debug

sln 项目入口文件目录:
D:\vstudio 2013\MFC_MQTT_Client\MFC_MQTT_Client.sln

cpp 和 h 文件目录:
D:\vstudio 2013\MFC_MQTT_Client\mfc_mqtt-client-power-on-off

编译后 Debug 版 exe 文件目录:
D:\vstudio 2013\MFC_MQTT_Client\mfc_mqtt-client-power-on-off\Debug


三、添加依赖到MFC工程中:

3.1 添加 .h 头文件

将 paho.mqtt.c\src 下的 .h 头文件,复制到 MFC 项目的 include (D:\vstudio 2013\MFC_MQTT_Client\mfc_mqtt-client-power-on-off\include)

include 文件夹,需要手动新建

image

3.2 添加 lib 静态链接库

将 paho.mqtt.c\src\Debug 下的 lib 静态库文件,复制到 D:\vstudio 2013\MFC_MQTT_Client\mfc_mqtt-client-power-on-off 和 .cpp 同级目录
image

注意:如果不要求 lib 在其他目录,则可以不用设置路径,VS会优先查找项目下和cpp同目录是否有 lib 文件

3.3 项目里 lib 添加

将 lib 添加到配置的附加依赖项里,编译链接时候就能找到要用哪个文件
image

image

3.4 添加 dll 运行依赖库

将 paho.mqtt.c\src\Debug 下的 dll 动态库文件,复制到 D:\vstudio 2013\MFC_MQTT_Client\Debug 目录下
image

需要的依赖库就放置完成,下面就开始写 MFC 功能代码。


四、官方C代码示例:

https://docs.emqx.com/zh/emqx/v5.0/connect-emqx/c.html

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

#include "MQTTClient.h"

#define ADDRESS     "tcp://broker.emqx.io:1883"
#define CLIENTID    "emqx_test"
#define TOPIC       "testtopic/1"
#define PAYLOAD     "Hello World!"
#define QOS         1
#define TIMEOUT     10000L

int main(int argc, char* argv[])
{
    MQTTClient client;
    MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
    MQTTClient_message pubmsg = MQTTClient_message_initializer;
    MQTTClient_deliveryToken token;
    int rc;

    MQTTClient_create(&client, ADDRESS, CLIENTID,
        MQTTCLIENT_PERSISTENCE_NONE, NULL);
  
    // MQTT 连接参数
    conn_opts.keepAliveInterval = 20;
    conn_opts.cleansession = 1;

    if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
    {
        printf("Failed to connect, return code %d\n", rc);
        exit(-1);
    }
  
    // 发布消息
    pubmsg.payload = PAYLOAD;
    pubmsg.payloadlen = strlen(PAYLOAD);
    pubmsg.qos = QOS;
    pubmsg.retained = 0;
    MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token);
    printf("Waiting for up to %d seconds for publication of %s\n"
            "on topic %s for client with ClientID: %s\n",
            (int)(TIMEOUT/1000), PAYLOAD, TOPIC, CLIENTID);
    rc = MQTTClient_waitForCompletion(client, token, TIMEOUT);
    printf("Message with delivery token %d delivered\n", token);
  
    // 断开连接
    MQTTClient_disconnect(client, 10000);
    MQTTClient_destroy(&client);
    return rc;
}


免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。




参考、来源:
https://hellobug.blog.csdn.net/article/details/108272834



标签:MQTTClient,MFC,mqtt,client,MQTT,源码,paho
From: https://www.cnblogs.com/wutou/p/18323839

相关文章

  • SSM-网络课程系统-29230(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、APP
    SSM网络课程系统摘 要本论文主要论述了如何使用SSM框架开发一个网络课程系统,将严格按照软件开发流程进行各个阶段的工作,采用B/S架构Java技术,面向对象编程思想进行项目开发。在引言中,将论述网络课程系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统......
  • Nacos 配置中心配置加载源码分析
    前言:上一篇我们分析Nacos配置中心服务端源码的时候,多次看到有去读取本地配置文件,那本地配置文件是何时加载的?本篇我们来进行详细分析。Nacos系列文章传送门:Nacos初步认识和Nacos部署细节Nacos配置管理模型–命名空间(Namespace)、配置分组(Group)和配置集ID(DataID)......
  • SpringBoot 结合官网对MQTT消息队列整合记录
    SpringBoot结合官网对MQTT消息队列整合首先是mavenPom的引入MqttClient<dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.2.......
  • 爬虫爬取免费代理ip(附源码)
    在爬取某些网站的时候我们有可能遇到ip反爬措施,通常可以使用代理ip的方法应对,本次我们要爬取的是国内某知名的代理ip网站,并挑选出其中响应速度符合我们要求的IP。爬取代码如下:defget_ip(last):proxies_list=[]#ip池forpageinrange(1......
  • PixPro 全开源图床系统源码,非常强大的压缩率 自定义尺寸,支持多种格式
    PixPro全开源图床系统源码,非常强大的压缩率自定义尺寸,支持多种格式PixPro全开源图床系统源码,非常强大的压缩率自定义尺寸,支持多种格式一款专为个人需求设计的高效图床解决方案,集成了强大的图片压缩功能与优雅的前台后台管理界面。项目结构精简高效,提供自定义图片压缩率......
  • 新版saas餐饮外卖小程序源码通用小程序,扫码点餐,DIY装修,代付,收银台,全开源
    新版saas餐饮外卖小程序源码通用小程序,扫码点餐,DIY装修,代付,收银台,全开源新版saas餐饮外卖小程序源码通用小程序,扫码点餐,DIY装修,代付,收银台,全开源使用场景:百货超市/奶茶店/加盟餐饮店/蔬菜店/零食店/咖啡店/水果店/便利店/蛋糕店通用小程序。营销玩法:优惠券、满额立减......
  • Springboot网络安全宣传小程序 毕业设计源码70468
                         摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,网络安全宣传小程序被用户普遍使用,为方便用户能够......
  • 【微信小程序开发】从0-1注册、下载、安装、开发保姆篇教程(附Demo源码)
    文章目录前期准备注册登陆下载安装创建项目项目结构版本管理程序页面生命周期新增页面功能实现本篇小结更多相关内容可查看前期准备要有前端开发基础,已安装NodeJS,若未安装请参考NodeJS安装并生成Vue脚手架(保姆级)可参考小程序开发官方文档进行学习,本文也是参考......
  • 一款简而轻的项目运维监控软件,支持低侵入式在线构建、自动部署、日常运维(附源码)
    前言在当今快速发展的软件开发领域,开发团队经常面临一系列运维挑战。没有专业运维人员的支持,开发人员不得不承担构建和部署项目的任务。面对不同项目的构建和部署命令,以及多环境的打包需求,开发人员需要一个能够简化这些流程的解-决方案。同时,监控多个项目的运行状态、远程连......
  • 错误 1 error LNK2019: 无法解析的外部符号 _MQTTClient_create,该符号在函数 "protect
    前言全局说明错误1errorLNK2019:无法解析的外部符号_MQTTClient_create,该符号在函数"protected:virtualint__thiscallCmfc_mqttclientpoweronoffDlg::OnInitDialog(void)"(?OnInitDialog@Cmfc_mqttclientpoweronoffDlg@@MAEHXZ)中被引用一、说明环境:Windows1......