首先参考了:
调用MQTTClient_connect返回-8_libpaho-mqtt3c.so-优快云博客
他的文章并没有解决我的问题.但是可以参考.
我说下我的问题:
调用MQTTClient_publishMessage() 返回-8.
问题原因:
MQTTClient_message 这个结构体定义的变量.没有被"完全"初始化.
初始化一下就行. MQTTClient_message pubmsg = MQTTClient_message_initializer;
要不然下面这两个变量,手动初始化
/** The eyecatcher for this structure. must be MQTM. */
char struct_id[4];
/** The version number of this structure. Must be 0 */
int struct_version;
多说一句:
paho某些结构体中会把构造函数delete.所以你很自然的会调用宏在初始化比如:
MQTTClient_connectOptions m_ConnectOpt;
MQTTClient_SSLOptions m_SSLOpt;
有些不会这样,比如MQTTClient_message,所以我没有直接用它的宏.你可以后来单独赋值成员变量.只要不忘了个别变量就行, 忘了就报错-8.