Hallo, ich versuche die MQTT-Unterstuetzung fuer collectord einzukompilieren, schlaegt aber mit folgenden Fehlern fehl: ``` ++ -Wall -c -O2 -DHAVE_DAEMONIZE -I../../mqtt_client_cpp/include -DMQTT_NO_TLS -DHAVE_MQTT main.cpp In file included from main.cpp:31:0: MqttAdapter.h:69:92: Fehler: falsche Anzahl der Templateargumente (2, sollte 1 sein) std::shared_ptr<mqtt::client<boost::asio::ip::tcp::socket, boost::asio::io_service::strand> > m_client; ^ In file included from ../../mqtt_client_cpp/include/mqtt_client_cpp.hpp:8:0, from MqttAdapter.h:28, from main.cpp:31: ../../mqtt_client_cpp/include/mqtt/client.hpp:45:7: Anmerkung: für »template<class Socket> class mqtt::client« bereitgestellt class client : public endpoint<Socket> { ^~~~~~ In file included from main.cpp:31:0: MqttAdapter.h:69:94: Fehler: Templateargument 1 ist ungültig std::shared_ptr<mqtt::client<boost::asio::ip::tcp::socket, boost::asio::io_service::strand> > m_client; ^ make: *** [Makefile:49: main.o] Fehler 1 ``` Verwendete Libraries/Compilerversionen unter archlinux: boost: 1.64.0-4 gcc: 7.2.0-2 gcc-5: 5.4.0-1 mqtt_client_cpp: v1.0.7 Kann mir jemand weiterhelfen? Gruesse, Matthias
Hallo Matthias, ich kenne deine vewendeten Bibliothek selber nicht, aber ich vermute, dass du Versionen verwendest, die nicht kompatibel sind. So wie es aussieht will MqttAdapter.h das Template mqtt::client mit zwei Parametern verwenden, es hat aber nur einen Parameter. Du kannst ja mal schauen, ob MqttAdapter zur Version von mqtt_client_cpp passt.
Mit folgendem Patch funktioniert es den aktuellsten Libraries: boost-libs=1.64.0, mqtt_cpp=1.07 ``` diff --git a/collector/MqttAdapter.h b/collector/MqttAdapter.h index ec02b65..2a9751e 100644 --- a/collector/MqttAdapter.h +++ b/collector/MqttAdapter.h @@ -66,7 +66,7 @@ class MqttAdapter : public boost::noncopyable static const unsigned int MinRetryDelaySeconds = 5; static const unsigned int MaxRetryDelaySeconds = 5 * 60; - std::shared_ptr<mqtt::client<boost::asio::ip::tcp::socket, boost::asio::io_service::strand> > m_client; + std::shared_ptr<mqtt::client<mqtt::tcp_endpoint<boost::asio::ip::tcp::so cket, boost::asio::io_service::strand> > > m_client; EmsCommandSender * m_sender; boost::shared_ptr<EmsCommandClient> m_cmdClient; bool m_connected; ```
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.