MQTT C++ Client for Posix and Windows

This C++ client provides an interface which is intended to mirror the Paho Java API as closely as possible. It requires the Paho MQTT C client library.



Source is available from the GitHub repository.


Builds will be able to be downloaded here.

Building from source


The C++ client is built for Linux/Unix/Mac with CMake, autotools, or GNU Make, and use g++ or clang++ as the compiler. Because it requires a compliant C++11 compiler, only GCC 4.8.1 or clang 3.6 or later are supported. See the GitHub page for complete build instructions.


For Windows, CMake is used to generate a solution file for Visual Studio. Due to the C++11 requirement, the earliest version that can be used with the library is Visual Studio 2015. See the GitHub page for complete build instructions.


Reference documentation is online.

Getting Started

These C++ clients connect to a broker using a TCP/IP connection using Posix or Windows networking, threading and memory allocation calls. They cannot be used with other networking APIs. For that, look at the Embdedded C/C++ client.

Here is a simple example of publishing with the C++ client synchronous API:

int main(int argc, char* argv[])
    const std::string TOPIC { "hello" };
    const std::string PAYLOAD1 { "Hello World!" };

    const char* PAYLOAD2 = "Hi there!";

    // Create a client

    mqtt::client cli(ADDRESS, CLIENT_ID);

    mqtt::connect_options connOpts;

    try {
        // Connect to the client


        // Publish using a message pointer.

        auto msg = mqtt::make_message(TOPIC, PAYLOAD1);


        // Now try with itemized publish.

        cli.publish(TOPIC, PAYLOAD2, strlen(PAYLOAD2), 0, false);

        // Disconnect

    catch (const mqtt::exception& exc) {
        std::cerr << "Error: " << exc.what() << " ["
            << exc.get_reason_code() << "]" << std::endl;
        return 1;

    return 0;