当前位置:   article > 正文

Windows下libmodbus库的编译与Qt里的调用_libmodelbus下载

libmodelbus下载

引言

最近尝试利用Qt制作客户端界面,但查阅文献发现其自带modbus通讯库无法满足我所需的实时性,所以尝试配置第三方库libmodbus。作为新人,我在配置过程中遇到较多问题,浪费三天方才解决,网络上的众多博客对于我这个菜鸟新人不是很友好,故将我的环境编译配置过程详细记录于此,希望后面的新人只用一篇文章方可解决!

一、介绍

libmodbus作为跨平台的开源库,在不同系统下需要对源文件进行编译才能使用,我使用的Windows所以只查阅了这一方面的知识。Windows系统下的编译方式主要有两种:①利用MSYS和MinGW对其编译   ②利用VS对齐编译,其中第一种是主流方式,下面开始记录编译步骤(两种方式本菜鸟都试过,一开始都失败了,最后是用第一种方式解决)。

二、MSYS+MinGW对libmoodbus编译

1、下载libmodbus库

方法一:源文件地址:https://github.com/stephane/libmodbus

方法二:libmodbus官网:https://libmodbus.org/

ps:方法二只是防止方法一的登入失败,进入libmodbus官网后也是跳转进入github里

找到下载路径后,将libmodbus-master压缩包解压

 2、下载MSYS

(1)下载

下载地址:https://www.msys2.org/

点击链接直接下载,这一步会比较慢,可以利用迅雷等工具

 (2)安装

双击下载好的.exe文件开始安装

除了安装位置根据个人喜好修改(不要有中文),其余步骤直接点击下一步即可。

 安装位置根据自己喜好即可,安装路径最好不要有中文(有中文的情况我没有试)

(3)解决MSYS的 软复制问题

这一步对于只是编译libmodbus库无用,故不作细讲。

详细可参考:https://blog.csdn.net/hustlei/article/details/86687588

(4)配置国内镜像源

进入安装目录下的pacman.d文件夹,我们需要修改如下图的三个文件夹的部分程序

将这三个文件用记事本打开,分别将Primary部分的程序修改如下: 

mirrorlist.mingw32文件

  1. ## 2-bit Mingw-w64 repository mirrorlist
  2. ## Primary
  3. Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
  4. Server = http://repo.msys2.org/mingw/i686
  5. Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686
  6. Server = http://www2.futureware.at/~nickoe/msys2-mirror/i686/

mirrorlist.mingw64文件

  1. ## 64-bit Mingw-w64 repository mirrorlist
  2. ## Primary
  3. Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
  4. Server = http://repo.msys2.org/mingw/x86_64
  5. Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
  6. Server = http://www2.futureware.at/~nickoe/msys2-mirror/x86_64/
  7. Server = http://mirror.bit.edu.cn/msys2/REPOS/

mirrorlist.msys文件

  1. ## MSYS2 repository mirrorlist
  2. ## Primary
  3. Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
  4. Server = http://repo.msys2.org/msys/$arch
  5. Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
  6. Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/$arch/

3、安装编译所需库

(1)在开始菜单找到MSYS选择 MINGW64 方式打开

(2)更新msys2,在命令行里输入pacman -Syu

pacman -Syu

如图所示:

 输入完成后按一下enter(回车)键,在提示后面输入Y并按一下enter(回车)键,如图所示

 之后会提示更新完成,需要关闭MSYS方可成功,如下图输入Y后按下回车键,MSYS会自动关闭

(3)如步骤(1)所示重新打开MSYS, 输入如下代码安装gcc,其方法与步骤(2)相似

pacman -S mingw-w64-x86_64-gcc

(4)输入如下代码安装automake

pacman -S automake

 (5)输入如下代码,安装libtool

pacman -S libtool

4、编译libmodbus库 

至此完成libmodbus编译所需文件的安装,接下来对其进行编译。

(1)根据自己之前的解压路径,打开libmodbus的解压文件,注意到里面的autogen.sh文件。

(2) 在MSYS里进入该路径,我这里的路径如上图所示是 D/libmodbus-master,所以我在MSYS里输入

cd /D/libmodbus-master

进入之后,MSYS会有黄色字体提示,之后输入 ./autogen.sh (图中第二个框内容错误,应该是此处的./而不是cd)编译生成configure文件,如下图所示:

上图中的"cd autogen.sh"输入错误,应该为下方第二个图所示的"./autogen.sh"。在这一步有的电脑可能报告运行失败,此时需要先运行"pacman -S autoconf-wrapper"安装所需库

运行完后再输入"./autogen.sh" :

(3)等待程序编译运行完成,此时界面会提示可以运行configure了。接着我们输入 ./configure ,注意此时无需输入cd,如下图所示:

 运行完成后如下图所示

 (4)至此完成了对libmodbus在Windows下的编译过程

三、libmodbus导入Qt Creator中使用的方式

完成libmodbus的编译后,下面是介绍如何将其导入Qt中使用,因本人刚刚接触,具体细节尚未实践,所以可能有点问题,请各位指正。

1、libmodbus文件的复制

(1)新建一个文件夹,将其命名为“libmodbus”以便于后续第三方程序对其调用。

 (2)打开libmodbus-master文件,下划找到configure.h后将其复制进入libmodbus文件

 (3)打开libmodbus-master下的src文件夹,,将文件内的所有.h和.c文件都复制进入libmodbus文件夹内

 (4)完成后libmodbus内文件的截图如下所示

 (5)复制libmodbus文件进入所需的Qt项目的文件夹内,与.pro文件同一级目录

 2、ws2_32.dll库文件的复制

打开系统盘(C盘),在右上角搜索框中输入“ws2_32.dll”,查询到后将其复制进入Qt项目的文件夹内,与.pro文件同一级目录,我这里查询到4个同名文件,具体用哪个我也不确定就直接选择了最大的这个,后面测试是可以的

 复制后结果如下:

3、Qt Creator项目中程序的添加 

(1)双击.pro文件打开项目,在左上角项目名处单机鼠标右键,之后左键单击 “添加现有文件”

 (2)此时会弹出项目的存储文件夹,打开之前复制进来的libmodbus文件夹

(3)选中文件夹内所有文件,点击打开

 Qt会自动将 .c 和.h文件分类

 (4)Qt项目里需要用到libmodbus的窗口的.h文件里加入 #include <libmodbus/config.h>此时没有报错提示则说明导入成功

Ps:有的教程是在libmodbus里新建一个“inc”文件夹放所有.h文件,则此时的路径应该为 #include <libmodbus/inc/config.h>

 (5)双击打开.pro文件

 在文件中加上 LIBS += -Ldll -lws2_32,结果如下:

 (6)至此,libmodbus库成功导入进Qt Creator。

近期帮别人配置环境时才发现少写了点步骤,赶紧补上,哈哈哈哈哈

(7)但是现在编译可能还会如下所示报错,此时需要在源码中更改一下报错文件里的相关路径设置。

双击第一个报错,进入报错位置,看到提示如下报错

        这是因为我们需要把路径根据自己存放位置进行更改,从.pro文件同级目录开始,例如我的config.h文件在.pro文件同级目录下的libmodbus文件夹里,则报错的那一行应该更改为如下图所示

        同理,修改其他两个报错文件(虽然四个报错,但是只需要改三个文件),如下所示

        同样,我们自己添加libmodbus的相关头文件时也要注意路径,我的存储路径下,头文件添加方式如下:

(8)至此,我们就可以利用libmodbus进行通讯啦。

主要参考文章:

libmodbus 在windows端的Qt的使用 - WTUH - 博客园 (cnblogs.com)

在windows上安装配置msys2_msys2 32位_hustlei的博客-CSDN博客

如何在mingw环境下使用libmodbus库_哔哩哔哩_bilibili

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/971392
推荐阅读
相关标签
  

闽ICP备14008679号