build mqtt client
下载OPENSSL
CMake GUI (cmake.org)
安装OpenSSL
下载32位版本:Win32 OpenSSL v1.1.1
这里下载
编译Paho C客户端
2.1 在paho.mqtt.c-master目录下新建build目录
2.2 运行cmake-gui
2.3 source code目录选择paho.mqtt.c-master目录,build目录选择C:\brixbot\paho.mqtt.c-master/build目录。
2.4 点击Configure按钮,在弹出的对话框中选择你要生成工程文件的Visual Studio版本。在本文中选择的是Visual Studio 14 2015 Win64。
2.5 点击Finish按钮关闭上面的对话框。此时,cmake-gui会出现可设置的编译选项。按照下图进行设置。
2.6 点击Configure按钮,此时会 弹出“Error in configuration process, project files may be invalid”的出错对话框。这是因为我们在刚刚的设置中要求把SSL支持编译进去,但SSL相关编译选项还未设置的原因。点Ok按钮关闭错误对话框。此时在编译选项列表中会多出SSL相关项目。按照下图进行设置:
2.7 设置好后再次点击Configure按钮。这时输出框中应该再没有红色的错误信息。
2.8 点击Generate按钮去生成Visual Studio的工程文件。这时,Open Project按钮应该变为允许状态。
2.9 点击Open Project按钮去打开Visual Studio 2015的工程。打开的工程应该包含下图所示项目:
完全编译ALL_BUILD工程。如果没有错误,编译INSTALL工程。编译成功后会在 C:\Program Files (x86)\Eclipse Paho C\ 目录下面生成所有文件
mqtt3a结尾的为异步版本
mqtt3as结尾的为支持SSL的异步版本
mqtt3c结尾的为同步版本
mqtt3cs结尾的为支持SSL的同步版本
编译 c++ 客户端
在paho.mqtt.cpp-master目录下新建build目录
运行cmake-gui
source code目录选择paho.mqtt.cpp-master目录,build目录选择C:\brixbot\paho.mqtt.cpp-master/build目录。
点击Configure按钮,在弹出的对话框中选择你要生成工程文件的Visual Studio版本。在本文中选择的是Visual Studio 14 2015 x86
点击Finish按钮关闭上面的对话框此时,cmake-gui会弹出“Error in configuration process, project files may be invalid”的出错对话框。这是因为我们还未告诉CMake哪里去找Paho C的库文件。点击OK关闭对话框后cmake-gui会可设置的编译选项。按照下图进行设置。PAHO_MQTT_C_LIB选择上一讲编译出来的paho-mqtt3as.lib库文件已确保我们编译出来的Paho C++库也支持SSL。
点击Configure按钮后cmake-gui会更新编译选项列表并列出和SSL相关的选项。检查SSL相关选项的文件名和路径是否正确。
再次点击Configure按钮。这时输出框中应该没有红色的错误信息。
点击Generate按钮去生成Visual Studio的工程文件。这时,Open Project按钮应该变为允许状态。
1.9 点击Open Project按钮去打开Visual Studio 2015的工程。打开的工程应该包含下图所示项目:
1.10 和上一讲介绍的一样,我们需要修改所有工程的字符集选项为Use Unicode Character Set
使用问题
1>d:\library\include\mqtt\thread_queue.h(79): warning C4003: not enough actual parameters for macro ‘max’
1>d:\library\include\mqtt\thread_queue.h(79): error C2589: ‘(‘: illegal token on right side of ‘::’
解决方法:
Your problem is caused by the <Windows.h> header file that includes macro definitions named max and min
添加个() 防止宏展开
size_t maxValue_ = (std::numeric_limits
//
You need to link with both the Paho C (libpaho-mqtt3as.so) and the Paho C++ (libpaho-mqttpp3.so). It looks like maybe you remembered the C library but forgot the C++ one?
Try adding “-lpaho-mqttpp3” to the compile/link line.