Как объявить Paho MQTT C ++ в другом файле c ++? - PullRequest
0 голосов
/ 14 апреля 2020

Ниже приведена структура моего проекта,

root@user-VirtualBox:/home/user/octane_etk_sample-6.0.0.240# ls
bin                 include   paho.mqtt.c    speedway_embedded_example.cpp
cap                 lib       paho.mqtt.cpp  VERSION
cap_description.in  Makefile  SCMREV

У меня есть пакет paho.mqtt. cpp внутри каталога проекта, т.е. octane_etk_sample-6.0.0.240, и я установил все упомянутые шаги в https://github.com/eclipse/paho.mqtt.cpp.

Теперь я включил заголовочный файл MQTTAsyn c в speedway_embedded_example. cpp, как показано ниже,

#include <iostream>
#include <string>
#include <algorithm>
#include <signal.h>
#include <stdio.h>
#include <cstdlib>
#include "ltkcpp.h"
#include "impinj_ltkcpp.h"
#include "time.h"


#include "/home/user/octane_etk_sample-6.0.0.240/paho.mqtt.c/src/MQTTAsync.h"

После включения файл заголовка, я пытаюсь установить sh клиентское соединение MQTT внутри класса publi c,

void
CMyApplication::printOneTagReportData (
  CTagReportData *              pTagReportData)
{
   string address = "tcp://mqtt1.mindlogic.com:1883";
   cout << "OK\n" << address;


   mqtt::async_client cli(address, "", 120, "data-persist");
}

Когда я пытаюсь создать файл speedway_embedded_example, я получаю ошибку ниже,

root@user-VirtualBox:/home/mindlogic/octane_etk_sample-6.0.0.240# make
mkdir -p ./bin
g++ \
    -m32 -Wno-write-strings \
    -Iinclude \
    speedway_embedded_example.cpp \
    -Llib -lltkcpp_x86 -lltkcppimpinj_x86 -lxml2_x86 \
    -L/usr/bin -ldl -lssl -lcrypto \
    -o bin/speedwayr_x86
speedway_embedded_example.cpp: In member function ‘void CMyApplication::printOneTagReportData(LLRP::CTagReportData*)’:
speedway_embedded_example.cpp:1650:4: error: ‘mqtt’ has not been declared
    mqtt::async_client cli(address, "", 120, "data-persist");

Кто-нибудь поможет мне установить sh клиентское соединение в вышеупомянутом сценарии?

1 Ответ

0 голосов
/ 14 апреля 2020

Вы включаете библиотеку C, в которой нет пространств имен.

Вам (вероятно) нужна библиотека C ++.

https://github.com/eclipse/paho.mqtt.cpp

Или еще лучше, поскольку вы включили встроенный тег, вы можете использовать

https://github.com/eclipse/paho.mqtt.embedded-c

, который имеет встроенный код для обоих C и C ++. Вы должны использовать пример кода, предоставленного используемой вами библиотекой.

...