C++ 无法在MOSQUITO MQTT代理插件上访问结构MOSQUITO的元素
我正在为mosquitto MQTT代理(版本1.5)实现一个插件,我正在努力访问插件实现中指向mosquitto客户端结构的指针的一些元素:C++ 无法在MOSQUITO MQTT代理插件上访问结构MOSQUITO的元素,c++,mqtt,mosquitto,C++,Mqtt,Mosquitto,我正在为mosquitto MQTT代理(版本1.5)实现一个插件,我正在努力访问插件实现中指向mosquitto客户端结构的指针的一些元素: #include <mosquitto_plugin.h> ... int mosquitto_auth_acl_check(void *userdata, int access, const struct mosquitto *client, const struct mosquitto_acl_msg *msg) { const
#include <mosquitto_plugin.h>
...
int mosquitto_auth_acl_check(void *userdata, int access, const struct mosquitto *client, const struct mosquitto_acl_msg *msg)
{
const char *clientid = client->id;
const char *username = client->username;
...
}
但是mosquitto_internal.h只是用于mosquitto的内部使用,我的插件无法访问它(至少我这么认为…)
在mosquitto_plugin.h(由mosquitto提供并包含在我的插件中)中,只有一个对mosquitto结构的“引用”:
struct mosquitto;
因此,只要我没有访问mosquitto结构的任何数据,它就会成功编译,但如果我试图访问一些数据,如id,它就会崩溃。让我们下载源代码,在插件实现中包含所需的头文件,并使用此生成文件 NAME=mosquitto\u auth\u插件\u http MOSQUITO=/MOSQUITO-1.5.2 INC=-I.-I$(MOSQUITTO)/-I$(MOSQUITTO)/lib-I$(MOSQUITTO)/src CFLAGS=-Wall-Werror-fPIC DEBUG=-DMQAP_DEBUG LIBS=-lcurl 全部:$(名称)。所以 $(名称).so:$(名称).o $(CC)$(CFLAGS)$(INC)-共享$^-o$@$(LIBS) %.o:%.c $(CC)-c$(CFLAGS)$(DEBUG)$(INC)$<-o$@ 清洁: rm-f*.o*.so
请使用
mosquitto\u broker.h
中提供的访问器功能,例如
const char *mosquitto_client_id(const struct mosquitto *client);
此时未定义类型
mosquitto
。请提供,以便我们提供适当的帮助。我相信您无法访问该结构的成员是故意的——API的设计者不希望您访问它们,因为如果您这样做,如果/当他们决定在将来的版本中更改该结构的内容时,您的代码将中断。(结构是在头文件中定义的,其文件名中带有字符串“internal”,这一事实强烈提示您不应该直接使用该文件的任何内容)请不要这样做,因为注意,该结构的内容被认为是代理的内部内容,而不是您要查看的内容。
const char *mosquitto_client_id(const struct mosquitto *client);