Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
AB32VG1
freemodbus
libmodbus
AB32VG1添加freemodbus组件的编译错误
发布于 2021-11-22 22:22:01 浏览:656
订阅该版
AB32VG1添加freemodbus组件的编译错误 编译时发现几个错误,感觉是库文件出问题导致的。 ``` error: 'struct rt_device' has no member named 'close' error: 'struct rt_device' has no member named 'write' error: 'struct rt_device' has no member named 'read' ``` 在网上搜索了一番,看到有个说法说是工程中定义的变量和系统头文件定义的宏冲突所致。 可能是在处理类定义之前,发现了同名的宏,导致在编译之前(预处理阶段)把类成员当作宏做了宏体的替换。 但我之前从未接触过这些实践内容,不知该怎么入手查找调整。 又尝试安装另一个modbus协议libmodbus组件,但也不成功,看错误提示似乎是说关于PIN_G引脚设置的问题,不知有无对此比较熟悉的大佬能给些指点?   
查看更多
2
个回答
默认排序
按发布时间排序
recan
认证专家
2021-11-23
公众号【架构师李肯】主理人,每周赠送10本IT书籍,正在 挑战100+最佳答案,有疑难问题请邀请我回答@_@
这个问题的根源是一个语法问题:rt_device结构体中没有定义read/write/close等成员变量(函数指针)。 `struct rt_device`结构体定义在include/rtdef.h中: ```c /** * Device structure */ struct rt_device { struct rt_object parent; /**< inherit from rt_object */ enum rt_device_class_type type; /**< device type */ rt_uint16_t flag; /**< device flag */ rt_uint16_t open_flag; /**< device open flag */ rt_uint8_t ref_count; /**< reference count */ rt_uint8_t device_id; /**< 0 - 255 */ /* device call back */ rt_err_t (*rx_indicate)(rt_device_t dev, rt_size_t size); rt_err_t (*tx_complete)(rt_device_t dev, void *buffer); #ifdef RT_USING_DEVICE_OPS const struct rt_device_ops *ops; #else /* common device interface */ rt_err_t (*init) (rt_device_t dev); rt_err_t (*open) (rt_device_t dev, rt_uint16_t oflag); rt_err_t (*close) (rt_device_t dev); rt_size_t (*read) (rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size); rt_size_t (*write) (rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size); rt_err_t (*control)(rt_device_t dev, int cmd, void *args); #endif #if defined(RT_USING_POSIX) const struct dfs_file_ops *fops; struct rt_wqueue wait_queue; #endif void *user_data; /**< device private data */ }; ``` 我们可以看到中间是有定义open/read/write/close/control的,但是它上面是被一个宏**RT_USING_DEVICE_OPS**控制起来; 当没有定义这个宏定义的时候,这几个函数指针才会参与编译;否则就不参与编译,这个时候就会报找不到这几个成员变量;就如同你的报错信息一样。 所以我猜测你的工程里面,已经定义了**RT_USING_DEVICE_OPS**宏, 这个宏一般是在rtconfig.h里面定义的, 你可以查一下你的工程环境。 
zhd0305
2021-11-23
快进入嵌入式大门了
而且就算是定义了RT_USING_DEVICE_OPS宏,也有对应的*init、*open、*close、*read、*write、*control等指针的。 在/rt-thread/include/rtdef.h库文件中有如下代码: ``` #ifdef RT_USING_DEVICE_OPS /** * operations set for device object */ struct rt_device_ops { /* common device interface */ rt_err_t (*init) (rt_device_t dev); rt_err_t (*open) (rt_device_t dev, rt_uint16_t oflag); rt_err_t (*close) (rt_device_t dev); rt_size_t (*read) (rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size); rt_size_t (*write) (rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size); rt_err_t (*control)(rt_device_t dev, int cmd, void *args); }; #endif ```
撰写答案
登录
注册新账号
关注者
0
被浏览
656
关于作者
zhd0305
快进入嵌入式大门了
提问
4
回答
1
被采纳
0
关注TA
发私信
相关问题
1
FREEMODBUS的设置问题
2
freemodbus tcp
3
freemodbus,写保持寄存器返回值一直是3,但是正确写入 ?
4
FreeModbus 从机该如何更新数据,菜鸟的不解.
5
RT thread freemobus tcp通讯问题
6
freemodbus主机读取从机保持寄存器命令后多两个0
7
freemodbus接收CRC校验疑问
8
freemodbus主机不通
9
freemodbus的主机任何指令都timeout
10
freemodbus 软件包主机有bug
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
如何用Ubuntu qemu跑zephyr_polling的蓝牙
2
分享一种很简单的不阻塞TCP发送方法
3
stm32c86使用串口3时无法正常读到中断的数据
4
如何用ART-PI跑zephyr_polling的蓝牙
5
掌上单片机实验室 – 基于 RTT 框架的第一个应用
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
AT
FinSH
Bootloader
CAN总线
ART-Pi
Hardfault
文件系统
USB
DMA
RT-Thread
线程
SCons
RT-Thread Nano
stm32
MQTT
ESP8266
ota
UART
RTC
freemodbus
rtthread
rt-smart
packages_软件包
I2C
WIZnet_W5500
flash
cubemx
FAL
定时器
BSP
AB32VG1
PWM
ADC
SDIO
msh
socket
LVGL
keil
Debug
C++_cpp
中断
编译报错
SFUD
SMP
MicroPython
本月问答贡献
出出啊
1431
个答案
317
次被采纳
小小李sunny
1342
个答案
267
次被采纳
crystal266
505
个答案
149
次被采纳
whj467467222
1212
个答案
142
次被采纳
张世争
590
个答案
135
次被采纳
本月文章贡献
出出啊
3
篇文章
5
次点赞
小小李sunny
1
篇文章
1
次点赞
crystal266
1
篇文章
3
次点赞
whj467467222
2
篇文章
4
次点赞
张世争
6
篇文章
14
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部