1. 为什么要在Windows上自己编译Libmodbus?
如果你正在用QT在Windows上开发工业控制、数据采集或者物联网相关的应用,十有八九会碰到Modbus协议。这玩意儿可以说是工控领域的“普通话”,PLC、传感器、变频器这些设备大多都靠它来通信。Libmodbus是一个用C写的、非常纯粹的Modbus协议栈开源库,轻量、高效,没有乱七八糟的依赖,是很多C/C++项目接入Modbus的首选。
但问题来了,你兴冲冲地去官网或者GitHub找Windows版的预编译库,大概率会扑个空。官方主要维护的是Linux版本,Windows平台的支持文档少得可怜,更别提直接拿来就能用的.dll和.lib文件了。网上的确能找到一些别人编译好的库,但版本可能老旧,或者你不知道它背后用了什么编译参数,有没有安全隐患,用在严肃的工业项目里心里总不踏实。更常见的情况是,你的QT项目可能同时需要32位和64位的库,以适应不同的部署环境,这时候自己动手编译就成了唯一靠谱的选择。
自己编译听起来有点吓人,尤其是对于习惯了Linux下./configure && make的朋友,看到Windows和Visual Studio可能就头大。但别担心,这个过程其实是一层窗户纸,捅破了就发现没那么复杂。我前阵子刚为一个QT项目搞定了Libmodbus的集成,把32位和64位的动态库都编译了出来,中间确实踩了几个坑。今天我就把这些实战经验,包括每一步的操作细节和遇到的“坑”怎么填,都详细地分享出来。目标就一个:让你能按照这个指南,一次成功地在你的Windows QT项目里用上最新、最干净的Libmodbus库。
2. 编译前的准备工作:别急着打开VS
磨刀不误砍柴工,准备工作做得好,编译过程才能顺畅。这里有几个关键点,一步都不能错。
2.1 获取正确的源代码
首先,去Libmodbus的官方GitHub仓库获取源码:https://github.com/stephane/libmodbus/。我建议直接点击“Code”按钮,然后选择“Download ZIP”,这样最快。下载后解压到一个你熟悉的路径,比如D:\Dev\libmodbus。记住这个路径,后面会用到。
解压后的目录结构里,你需要重点关注的是src文件夹和它下面的win32子文件夹。src里面是库的所有核心源代码,而win32文件夹则是为Windows平台编译准备的“入口”。
2.2 认识关键的配置文件:configure.js
进入src/win32文件夹,你会发现一个名为configure.js的JavaScript文件。这个文件是整个Windows编译流程的“钥匙”,它的作用是生成编译时必需的一些配置文件,特别是modbus-version.h头文件。这个头文件包含了库的版本信息,没有它,编译肯定会报错。
很多新手会直接忽略这一步,用Visual Studio打开解决方案文件就开始编译,然后立刻卡在“找不到modbus-version.h”的错误上。所以,我们必须先运行这个脚本。
2.3 运行配置脚本生成头文件
打开Windows的命令提示符(CMD)。这里有个小技巧:你可以直接在src/win32文件夹的地址栏里输入cmd然后回车,这样CMD就会直接在这个路径下打开,省去切换目录的麻烦。
在CMD中,输入以下命令并回车:
cscript configure.js
cscript是Windows系统自带的脚本宿主程序,专门用来执行.js或.vbs脚本。运行成功后,它不会有太多花哨的输出,但你会发现在src目录(注意,是上一级的src目录,不是win32目录)下,新生成了一个modbus-version.h文件。同时,win32目录下也会更新config.h等文件。这就说明配置脚本成功执行了,编译所需的基础文件已经就位。
3. 使用Visual Studio编译动态库
好了,重头戏来了。我们将使用Visual Studio来编译生成动态链接库(DLL)和对应的

1881

被折叠的 条评论
为什么被折叠?



