Problema con libreria qtmqtt
-
Buongiorno a tutti, sono un novizio nella programmazione con QT, e mi stavo addentrando nella stesura del mio primo programma basato sull'utilizzo dello standard MQTT.
Purtroppo sto riscontrando un problema, ovvero alla creazione dell'oggetto mi viene restituito un errore di "undefined reference".
La libreria è stata installata tramite il QT Maintenance Tool con sistema operativo linux.Qualcuno conosce la probabile causa? Specifico che sto lavorando con una applicazione console, quindi senza il file .pro o interfaccia grafica al momento.
Grazie in anticipo per le eventuali risposte.(allego il blocco di codice che mi dà l'errore)
void Client::setup(){ qint16 port; m_client = new QMqttClient(this); QTextStream host(stdin); QString hostname = host.readLine(); m_client->setHostname(hostname); std::cin >> port; m_client->setPort(port); qDebug() << "porta e host settati."; }
-
Non hai linkato la libreria. Se usi CMake devi aggiungerla al
find_package
etarget_link_libraries
.Se guardi la documentazione, la prima tabellina in alto ti dice cosa devi aggiungere al CMake
Se posti il tuo CMakeLists.txt possiamo essere piu' precisi
-
Ciao, il problema era molto simile a quello che mi hai descritto tu, infatti avevo inserito le due righe date dalla documentazione, ma nella posizione sbagliata, ovvero sopra add_executable al posto di metterle sotto.
Adesso la libreria è inclusa e non mi da nessun problema, ma non riesco a farla funzionare come vorrei. Non riesco a fare connettere il mio client al broker MOSQUITTO, sapresti aiutarmi?
-
@VRonin Non so perché non riesco a postarlo, lo contrassegna come spam, probabilmente perché ho fatto la stessa domanda sul forum internazionale.
Ho caricato il tutto in un .txt, spero che non venga bloccato: https://drive.google.com/file/d/1SLDOsJJLdT_onzM1wmfALoA-clB-zf4d/view?usp=sharing -
Le risposte nel forum inglese sono corrette: https://forum.qt.io/topic/158642/mqtt-connection-problem
E' solo che devi cambiare approccio e usare l'event loop di Qt -
Ci proverò appena posso mettere mano sul codice, grazie mille per i feedback :D
-
@VRonin Come mi hai e hanno consigliato nell'altro topic, ho provato a rimuovere i loop e a utilizzare invece i segnali.
Ho anche creato alcune classi, una per ogni funzionalità che voglio che il mio programma abbia, ma ancora non riesco a farlo funzionare bene.
Ho letto nella documentazione che "QMqttClient::connected()" è un segnale inviato quando il client è connesso correttamente all'host, ma c'è ancora qualcosa che mi manca, perché non riesco ancora a usarlo correttamente. Quando provo ad usarlo in una funzione "connect", mi restituisce l'errore che puoi vedere nell'immagine qui sotto:
Ho provato la mia implementazione, ma ancora senza successo. Queste sono le mie funzioni ora:
https://drive.google.com/file/d/1GamXYJo1XufG94AD24Xa1UOF2zJ1XkBz/view?usp=sharing
So che mi manca qualcosa, ma non riesco ad arrivare al punto in cui capisco cosa sto effettivamente facendo di male.