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

引言

 

最近尝试利用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里

Windows下libmodbus库的编译与Qt里的调用_第1张图片

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

Windows下libmodbus库的编译与Qt里的调用_第2张图片

 2、下载MSYS

(1)下载

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

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

Windows下libmodbus库的编译与Qt里的调用_第3张图片

 (2)安装

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

Windows下libmodbus库的编译与Qt里的调用_第4张图片

 

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

Windows下libmodbus库的编译与Qt里的调用_第5张图片

 安装位置根据自己喜好即可,安装路径最好不要有中文(有中文的情况我没有试)Windows下libmodbus库的编译与Qt里的调用_第6张图片

Windows下libmodbus库的编译与Qt里的调用_第7张图片

Windows下libmodbus库的编译与Qt里的调用_第8张图片

Windows下libmodbus库的编译与Qt里的调用_第9张图片

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

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

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

(4)配置国内镜像源

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

Windows下libmodbus库的编译与Qt里的调用_第10张图片

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

mirrorlist.mingw32文件

## 2-bit Mingw-w64 repository mirrorlist
## Primary

Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
Server = http://repo.msys2.org/mingw/i686
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686
Server = http://www2.futureware.at/~nickoe/msys2-mirror/i686/

mirrorlist.mingw64文件

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

mirrorlist.msys文件

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

3、安装编译所需库

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

Windows下libmodbus库的编译与Qt里的调用_第11张图片

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

pacman -Syu

如图所示:

Windows下libmodbus库的编译与Qt里的调用_第12张图片

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

Windows下libmodbus库的编译与Qt里的调用_第13张图片

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

Windows下libmodbus库的编译与Qt里的调用_第14张图片

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

pacman -S mingw-w64-x86_64-gcc

Windows下libmodbus库的编译与Qt里的调用_第15张图片

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

pacman -S automake

Windows下libmodbus库的编译与Qt里的调用_第16张图片

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

pacman -S libtool

Windows下libmodbus库的编译与Qt里的调用_第17张图片

4、编译libmodbus库 

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

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

Windows下libmodbus库的编译与Qt里的调用_第18张图片

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

cd /D/libmodbus-master

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

Windows下libmodbus库的编译与Qt里的调用_第19张图片

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

Windows下libmodbus库的编译与Qt里的调用_第20张图片

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

Windows下libmodbus库的编译与Qt里的调用_第21张图片

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

Windows下libmodbus库的编译与Qt里的调用_第22张图片

 运行完成后如下图所示

Windows下libmodbus库的编译与Qt里的调用_第23张图片

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

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

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

1、libmodbus文件的复制

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

Windows下libmodbus库的编译与Qt里的调用_第24张图片

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

Windows下libmodbus库的编译与Qt里的调用_第25张图片

Windows下libmodbus库的编译与Qt里的调用_第26张图片

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

Windows下libmodbus库的编译与Qt里的调用_第27张图片

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

Windows下libmodbus库的编译与Qt里的调用_第28张图片

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

Windows下libmodbus库的编译与Qt里的调用_第29张图片

 2、ws2_32.dll库文件的复制

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

Windows下libmodbus库的编译与Qt里的调用_第30张图片

 复制后结果如下:

Windows下libmodbus库的编译与Qt里的调用_第31张图片

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

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

Windows下libmodbus库的编译与Qt里的调用_第32张图片

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

Windows下libmodbus库的编译与Qt里的调用_第33张图片

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

Windows下libmodbus库的编译与Qt里的调用_第34张图片

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

Windows下libmodbus库的编译与Qt里的调用_第35张图片

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

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

Windows下libmodbus库的编译与Qt里的调用_第36张图片

 (5)双击打开.pro文件

Windows下libmodbus库的编译与Qt里的调用_第37张图片

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

Windows下libmodbus库的编译与Qt里的调用_第38张图片

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

主要参考文章:

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

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

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

你可能感兴趣的:(Qt,windows)