Ciao a tutti.
Vorrei provare ad utilizzare il protocollo MQTT in un programma in c, sto utilizzando un pc con linux mint.
Ho installato le librerie build-essential e libpaho-mqtt-dev
Ho copiato dal sito di eclipse un programmino id prova, questo:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "MQTTClient.h"
#define ADDRESS "tcp://broker.emqx.io:1883"
#define CLIENTID "emqx_test"
#define TOPIC "testtopic/1"
#define PAYLOAD "Hello World!"
#define QOS 1
#define TIMEOUT 10000L
int main(int argc, char* argv[])
{
MQTTClient client;
MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
MQTTClient_message pubmsg = MQTTClient_message_initializer;
MQTTClient_deliveryToken token;
int rc;
MQTTClient_create(&client, ADDRESS, CLIENTID,
MQTTCLIENT_PERSISTENCE_NONE, NULL);
// MQTT Connection parameters
conn_opts.keepAliveInterval = 20;
conn_opts.cleansession = 1;
if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
{
printf("Failed to connect, return code %d\n", rc);
exit(-1);
}
// Publish message
pubmsg.payload = PAYLOAD;
pubmsg.payloadlen = strlen(PAYLOAD);
pubmsg.qos = QOS;
pubmsg.retained = 0;
MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token);
printf("Waiting for up to %d seconds for publication of %s\n"
"on topic %s for client with ClientID: %s\n",
(int)(TIMEOUT/1000), PAYLOAD, TOPIC, CLIENTID);
rc = MQTTClient_waitForCompletion(client, token, TIMEOUT);
printf("Message with delivery token %d delivered\n", token);
// Disconnect
MQTTClient_disconnect(client, 10000);
MQTTClient_destroy(&client);
return rc;
}
Ma quando lo compilo gcc mi dice:
$ gcc mqtt.c
/usr/bin/ld: /tmp/cccyE78R.o: in function `main':
mqtt.c:(.text+0x18d): undefined reference to `MQTTClient_create'
/usr/bin/ld: mqtt.c:(.text+0x1ba): undefined reference to `MQTTClient_connect'
/usr/bin/ld: mqtt.c:(.text+0x23f): undefined reference to `MQTTClient_publishMessage'
/usr/bin/ld: mqtt.c:(.text+0x28f): undefined reference to `MQTTClient_waitForCompletion'
/usr/bin/ld: mqtt.c:(.text+0x2c5): undefined reference to `MQTTClient_disconnect'
/usr/bin/ld: mqtt.c:(.text+0x2d4): undefined reference to `MQTTClient_destroy'
collect2: error: ld returned 1 exit status
cosa significa undefined reference? Ho verificato il file MQTTClient.h si trova in /usr/include
avete suggerimenti? Caio