无法在 Mosquitto MQTT Broker 插件上访问结构体 mosquitto 的元素
Cannot access elements of struct mosquitto at Mosquitto MQTT Broker plugin
我正在为 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 char *clientid = client->id;
const char *username = client->username;
...
}
在编译时,我检索错误:
错误:取消引用指向不完整类型的指针 const char *clientid = client->id;
任何人都可以给我一些如何访问客户数据的建议吗?
编辑:结构 mosquitto 是在 mosquitto 源代码 (mosquitto_internal.h( 中定义的:
struct mosquitto {
...
char *id;
char *username;
...
}
但是mosquitto_internal.h只是供mosquitto的内部使用,我的插件无法访问(至少我是这么认为的......
在 mosquitto_plugin.h 内部(由 mosquitto 提供并由我的插件包含(只有一个对 mosquitto 结构的"引用":
struct mosquitto;
因此,只要我不访问 mosquitto 结构的任何数据,它就会成功编译,但如果我尝试访问一些数据,例如 id,它就会崩溃。
请使用mosquitto_broker.h
中提供的访问器函数,例如
const char *mosquitto_client_id(const struct mosquitto *client);
让下载源代码,在您的插件实现中包含所需的头文件并使用此 Makefile
名称 = mosquitto_auth_plugin_http
MOSQUITTO = ./mosquitto-1.5.2
INC = -I. -I$(MOSQUITTO(/-I$(MOSQUITTO(/lib -I$(MOSQUITTO(/src
CFLAGS = -Wall -Werror -fPIC
调试 = -DMQAP_DEBUG
LIBS = -lcurl
all: $(NAME(.so
$(NAME(.so: $(NAME(.o $(CC( $(CFLAGS( $(INC( -shared $^ -o $@ $(LIBS(
%.o : %.c $(CC( -c $(CFLAGS( $(调试( $(INC( $<-o $@
干净: rm -f *.o *.so
- 无法在 Mosquitto MQTT Broker 插件上访问结构体 mosquitto 的元素
- 在C++中使用链表的堆栈实现中,访问结构体headNode成员count和top会导致运行时错误
- 访问不同类的私有结构体成员
- 从结构体访问数据时,操作符重载到哪里去了?
- 定义要在包含的头文件中访问的结构体的正确方法
- 访问结构体中定义的枚举的值
- 将结构体传递给线程,如何访问结构体中的多个数据
- 如何访问结构体中的值
- 访问结构体中定义的枚举值
- 在模板类中使用结构体作为参数并访问它们的元素
- 使用局部变量或多次访问结构体值(c++)
- 从派生类访问基类中的结构体
- 如何实现两个可以相互访问的结构体
- 试图使用指向结构体向量的指针访问结构体类型时出错
- android:无法访问结构体静态数据成员
- 在类LinkedList节点中访问结构体的成员
- 如何从另一个c++类访问一个结构体
- 使用成员变量的偏移量访问结构体的私有成员
- 可以访问传递给模板的结构体吗?
- 在c++中使用迭代器访问结构体