QtCreator中直接在项目中使用libmodbus源码

近期项目中多次用到modbus,使用过一段时间qt自带的modbus类库,但在很多需求中它只能满足基本的操作,对要求速度或效率的项目来说Qt自带modbus十分难用,由此在此基础上,果断换掉modbus库,使用libmodbus来代替,该库还具有跨平台功能,用了几个项目感觉还行,在此把使用说明及出现问题记录一下;

1.下载libmodbus,最新版本已经更新到3.1.6,下载路径:https://libmodbus.org/download/,本人直接下载源码

2.编译库(在此我不使用该方法,直接使用它的源代码)

3.将下载的库解压,找到src文件夹,将其改名为modbus,删除里面的其他非.h.c文件,只保留如下

4.将该目录放到自己项目目录中,然后将所有文件添加到项目中

5.直接编译一次,一定会报错缺少头文件,将报错的代码全部删掉(#include <config.h>)

在linux系统中,删掉该头文件编译是可以通过的,但在windows中会报很多链接错误,我一一给出解决办法:

一、vs+qt环境

1.在vs+QT环境中,会缺少__cplusplus,导致编译过不,解决方法在https://docs.microsoft.com/zh-cn/cpp/build/reference/zc-cplusplus?view=vs-2019中有方案,解决办法为在vs项目属性中:打开“配置属性” > “C/C++” > “命令行”属性页,将 /Zc:__cplusplus 添加到“其他选项:”窗口,

2.由于我们使用源码编译,其实不在需要dll,所以在modbus.h中删除或屏蔽

3.处理完这些还不够,编译中会报win32网络api链接错误,解决方法在:链接器依赖项中加入ws2_32即可

二、windows下qtcreator中只需直接项目.pro文件中加入:win32:LIBS += -lws2_32

解决以上几条,就可在项目中直接使用libmodbus源码

注在windows环境中使用COM时,当COM端口号大于COM9时需在COMxx前加“\\\\.\\”,该问题由于win32下I/O对串口预设只存在COM1-COM9,当大于COM9会找不到com端口,详情:https://docs.microsoft.com/zh-cn/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN

  • 3
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值