winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo

这篇具有很好参考价值的文章主要介绍了winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文演示C语言如何使用eclipse-paho.mqtt.c库,包含自行编译库的步骤或者下载编译好的文件。

1.下载paho.mqtt.c库源码(zip 文件)

到官网选择C版本的paho源码进行下载

Eclipse Paho | The Eclipse Foundation

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo,C语言知识点杂烩,c语言,mqtt,物联网

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo,C语言知识点杂烩,c语言,mqtt,物联网

或者到下述连接下载

Releases · eclipse/paho.mqtt.c · GitHub

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo,C语言知识点杂烩,c语言,mqtt,物联网

2.编译paho.mqtt.c库(下述步骤不支持生成SSL的文件)

2.1.windows 下编译所需环境

a. cmake(可参考文章【windows下cmake的小白级入门使用教程(hello world)】(windows下cmake的小白级入门使用教程(hello world)_cmake windows_西晋的no1的博客-CSDN博客 )

b. vistual studio(如下图是vs2022必须的组件,cmake支持哪个版本的vs,可参照文章【查看当前cmake版本支持哪些版本的Visual Studio】( 查看当前cmake版本支持哪些版本的Visual Studio-CSDN博客 )进行确定)

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo,C语言知识点杂烩,c语言,mqtt,物联网

2.2.编译过程

a.如果是下载的 zip 文件,先解压代码,进入代码文件夹 paho.mqtt.c-1.3.9,在当前文件夹的地址栏中输入cmd,然后回车,调出命令行窗口。

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo,C语言知识点杂烩,c语言,mqtt,物联网

b.在命令行窗口中依次输入下述3行内容:

md build

cd build

cmake -G "Visual Studio 17" ..

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo,C语言知识点杂烩,c语言,mqtt,物联网

注:需要根据电脑上安装的cmake和vs版本进行填写,如有些低版本的cmake不支持Visual Studio 2022(升级cmake版本),有的电脑上没有安装Visual Studio 2022(安装Visual Studio 2022,或者选择电脑上有的版本)

vs版本对应

Visual Studio 17 2022       

= Generates Visual Studio 2022 project files.

    Use -A option to specify architecture.

Visual Studio 16 2019       

= Generates Visual Studio 2019 project files.

   Use -A option to specify architecture.

Visual Studio 15 2017 [arch]

= Generates Visual Studio 2017 project files.

   Optional [arch] can be "Win64" or "ARM".

Visual Studio 14 2015 [arch]

= Generates Visual Studio 2015 project files.

   Optional [arch] can be "Win64" or "ARM".

Visual Studio 12 2013 [arch]

= Generates Visual Studio 2013 project files.

   Optional [arch] can be "Win64" or "ARM".

Visual Studio 11 2012 [arch]

= Generates Visual Studio 2012 project files.

   Optional [arch] can be "Win64" or "ARM".

Visual Studio 10 2010 [arch]

= Deprecated.  Generates Visual Studio 2010  project files.

   Optional [arch] can be   "Win64" or "IA64".

Visual Studio 9 2008 [arch] 

= Generates Visual Studio 2008 project files.

   Optional [arch] can be "Win64" or "IA64".

编译成功之后,在build文件夹下会生成Eclipse Paho C.sln

c.用Visual Studio2022打开build文件夹下的Eclipse Paho C.sln

d.根据实际使用场景选择合适的版本(Debug或Release),然后选择生成->重新生成解决方案,等待一段时间,可以看到0失败

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo,C语言知识点杂烩,c语言,mqtt,物联网

e.此时可以在build文件夹下看到src文件夹下有个Debug或Release文件夹,里面有编译后生成的文件:paho-mqtt3a.dll、paho-mqtt3a.lib、paho-mqtt3c.dll、paho-mqtt3c.lib。

paho-mqtt3a : 一般实际开发中就是使用这个,a表示的是异步消息推送(asynchronous)。

paho-mqtt3as : as表示的是 异步+加密(asynchronous+OpenSSL)(本文步骤无法生成)。

paho-mqtt3c : c 表示的应该是同步(Synchronize),一般性能较差,是发送+等待模式。

paho-mqtt3cs : 同上,增加了一个OpenSSL而已(本文步骤无法生成)。

3.使用示例

3.1 新建C语言工程

具体操作过程可以参考文件【VS2022 和 VS2010 C语言控制台输出 Hello World】(https://blog.csdn.net/xijinno1/article/details/127826231)

3.2 在demo.cpp文件的同文件夹下新建一个文件夹,命名为【pahoC】

3.3 将源代码src文件夹下所有.h的文件和build\src\Debug(或Release)文件夹下的4个文件(paho-mqtt3a.dll、paho-mqtt3a.lib、paho-mqtt3c.dll、paho-mqtt3c.lib)粘贴到pahoC文件夹下

注意:后续3步的操作,一定要在与编译pahoC的配置一样,否则程序将不可使用paho-mqtt3a.lib、paho-mqtt3c.lib

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo,C语言知识点杂烩,c语言,mqtt,物联网

3.4 在demo工程属性中添加包含目录

$(LocalDebuggerWorkingDirectory)pahoC

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo,C语言知识点杂烩,c语言,mqtt,物联网

3.5 在demo工程属性中添加附加库目录

$(LocalDebuggerWorkingDirectory)pahoC

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo,C语言知识点杂烩,c语言,mqtt,物联网

3.6 在demo工程属性中添加附加依赖项

paho-mqtt3a.lib;paho-mqtt3c.lib;

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo,C语言知识点杂烩,c语言,mqtt,物联网

3.7 将下述示例代码覆盖demo.cpp中的所有内容

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MQTTClient.h"
#define ADDRESS     "tcp://localhost:1883"
#define CLIENTID    "ExampleClientPub"
#define TOPIC       "MQTT Examples"
#define PAYLOAD     "Hello World!"
#define QOS         111
#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);
    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(EXIT_FAILURE);
    }
    pubmsg.payload = (void*)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;
}

3.8 运行测试程序

程序正常运行,将有如下输出,是正常现象:

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo,C语言知识点杂烩,c语言,mqtt,物联网

运行程序过程中可能出现下面的报错,只需要将编译生成的paho-mqtt3a.dll、paho-mqtt3c.dll放于测试程序生成的exe所在的文件夹下即可。

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo,C语言知识点杂烩,c语言,mqtt,物联网文章来源地址https://www.toymoban.com/news/detail-714826.html

到了这里,关于winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UE4.27.2 源码使用 VS2022 编译时出现的错误的解决方法

    Fstring 的获得指针的函数是 nodiscard 的,但是目前这个表达式是可能 discard 的 https://forums.unrealengine.com/t/build-from-source-fails-with-errors-c4834-and-msb3073/1266696/4 我遇到的错误如下 这应该是说明 10.0.22621.0 是不适用的 我在网上看到了别人的解决办法是只保留 Win 10 的 SDK,不要 Win 11 的

    2024年02月07日
    浏览(61)
  • Python MQTT客户端 paho-mqtt

    Python中MQTT Python有许多优秀的MQTT客户端,比较有代表性的有paho-mqtt、hbmqtt、gmqtt等,各有特色 paho-mqtt 有完善的官方文档,代码风格易于理解,目前新版本支持 MQTT 5.0 hbmqtt 使用 asyncio 库实现,可以优化网络 I/O 带来的延迟,但是代码风格不友好,文档较少,不支持 MQTT 5.0,主要后续

    2024年02月04日
    浏览(69)
  • VS2022编译运行VS2015的项目

        最近新装了VisualStudio2022,有一些VS2015老的项目需要运行,但不想再安装VS2015,就想能否直接在VS2022编译运行,研究一下发现可行,记录一下。 1. 直接升级VS2015项目到2022使用windows sdk 10.0     发现老代码里的一些语法已经不支持,改动会很大,此路不通。 2. 保持VS2015项目

    2024年02月12日
    浏览(48)
  • Matlab2022a无法识别vs2019编译器,未检测到支持的编译器,错误使用Mex -setup error cannot find support compiler

    1、确定一下您的问题:错误使用Mex 2、再执行以下命令: 如果您的结果跟我一样,那么可以继续看,如果不一样,就可能不是同一个问题。 下面直接说解决方案: 3、打开powershell,执行下面命令 install-module -scope currentuser MSI 按照提示输入Y 4、继续执行命令 get-msirelatedproduct

    2024年02月06日
    浏览(80)
  • VS2022编译libui库

    libui是一个 C 中简单且可移植(但并非不灵活)的 GUI 库,它使用每个平台原生的GUI技术进行绘制。 官网地址:链接 本文将使用VS2022编译libui库,操作系统为Windows10。 首先在官网下载源代码,由于此代码不依赖第三库,故只需下载源代码即可进行编译。 我下载了最新的 mast

    2023年04月13日
    浏览(101)
  • VS2022编译nanovg绘图库

    本文将使用VS2022编译nanovg库,操作系统为Windows10。官网地址:链接 nanovg是一个基于 OpenGL 的抗锯齿二维矢量绘图库,可用于 UI 和可视化。截至到目前已经有4.7k star nanovg 使用stb_truetype进行字体渲染,使用stb_image进行图像加载。 Step1 下载nanovg 首先需要在官网下载 nanovg 源代码,

    2023年04月08日
    浏览(79)
  • linux下MQTT服务器(EMQX)搭建及paho.mqtt.c客户端开发

    前言: MQTT 是一种基于客户端服务端架构的发布 / 订阅模式的消息传输协议。它的设计思想是轻巧、开放、 简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与 机器的通信( M2M )以及物联网环境( IoT )。        ---

    2024年02月06日
    浏览(72)
  • Python实现的mqtt客户端工具分享,小巧且超轻量级(python+tkinter+paho.mqtt)

    mqtt协议调试时需要个客户端工具,但网上找的体积包都很大,都不够小巧和便携。于是趁周末时间用python搞出来了个客户端工具,使用python+tinker+paho.mqtt实现。源码量很少但功能不弱,相当的轻量级。分享给有需要的小伙伴,喜欢的可以点击收藏。 用python实现个跨平台的mq

    2024年02月07日
    浏览(45)
  • Jpeg-9e源码编译(Win10,VS2022)

    Jpeg-9e源代码下载网址 http://www.ijg.org/ 下载后得到文件 解压缩到“D:SourceCodesjpeg-9e” 在目录“D:SourceCodesjpeg-9e”中创建文本文件,并改名为“win32.mak”,其内容如附注所示。 使用命令行,进入VS2022开发者命令行窗口 cd D:ProgramsMicrosoft Visual Studio2022CommunityVCAuxiliaryBuild D

    2024年02月04日
    浏览(60)
  • VS2022编译安装Qt6.5源码

    包括安装VS2022,Windows SDK,Python3,这里就不再一一介绍了,需要说明的一点是如果要编译 QtWebEngine 和 QtPdf 两个组件的依赖问题,当然如果不需要,也可以不管它,则不会编译。 python库 html5lib : 使用 pip install html5lib 安装。 gperf、bison、flex 如果安装有Qt 5的Windows版本,比如

    2024年02月04日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包