热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vs2022编译libmodbus源码

​​​​​vs编译libmodbus-C文档类资源-CSDN下载项目需要用到了第三方库libmodbus,本文安装的是libmodbus3.1.7,结

​​​​​vs编译libmodbus-C++文档类资源-CSDN下载

项目需要用到了第三方库libmodbus,本文安装的是libmodbus3.1.7,结果如下。

方法一、vs2022编译,默认32位,64位版本需要进行一些设置,详见下文

1.libmodbus下载版本

https://github.com/stephane/libmodbus
2.src双击configure.js

出现
3.vs打开modbus-9.sln编译生成modbus.lib和modbus.dll

将平台配置成release,x64,编译

此时,会遇到如下LNK2019链接错误

解决如下图:缺少依赖库,在additional dependences添加ws2_32.lib,重新编译

出现下图错误

解决:缺少main函数,并不是可执行工程,将configuration type改为.dll,再次编译

编译成功,但会有一些inconsistent dll linkage warning,可以添加预定义

WIN32
_DEBUG
HAVE_CONFIG_H
DLLBUILD
_CRT_SECURE_NO_DEPRECATE=1
_CRT_NONSTDC_NO_DEPRECATE=1
_WINDOWS
ENABLE_THREADS
_CONST_CORRECT_OVERLOADS
NOMINMAX
FREEGLUT_STATIC

此时,成功生成.lib 和.dll

方法二、采用qt编译生成的,64位可用。注意在.pro文件添加 LIBS += -lWS2_32

方法三、模拟linux

一、搭建MSYS环境

1.下载安装msys(在windows上模拟linux)
网址:MSYS2

2.更新pacman -Syu(pacman类似apt-get)

3.配置
参考:在windows上安装配置msys2_hustlei的博客-CSDN博客_msys2安装
3.1实现 cd +文件名进入目录:打开/etc/profile文件,添加一个关键变量:“export MSYS="winsymlinks:lnk”
3.2配置国内镜像,方便快捷下载资源:在/etc/pacman.d文件中对3个镜像文件mirrorlist文件进行修改。
3.3安装git和vim编辑器:有点像linux了, 安装命令:pacman -S git;
3.4安装配置zsh:在linux下,默认采用的是bash,但是现在大多数人都用zsh,方便快捷。安装zsh的命令:pacman -S zsh ;zsh主题采用oh-my-zsh,需要链接到相应的github网址,进行下载。
修改默认shell为zsh:在msys2_shell.cmd文件中,将LOGINSHELL的变量,改为zsh,则启动msys2后自动进入zsh
3.5选择oh-my-zsh中的主题,采用ys。采用vim编辑器在根目录下,打开zshrc文件,修改其中的ZSH_THEME的名字,完成修改。
3.6gcc的安装和环境配置:我安装的是mingw64 mingw-x86_64-gcc版本。安装命令:pacman -S mingw-w64-x86_64-gcc安装完成。

二、编译安装modbus

1.下载源码

网址:https://libmodbus.org/releases/libmodbus-3.1.7.tar.gz

或GitHub - stephane/libmodbus at v3.1.7

2. 下载如下工具或组件:autoconf,automake,m4,libtool,perl,crypt。

其中autoconf,automake是主要使用工具;m4,libtool是必要工具;perl是支撑工具;crypt是支撑库。libtool和crypt以库的形式下载。

pacman -S autoconf

3.automake使用
    3.1运行autoscan命令,产生configure.scan文件;
    3.2将configure.scan 文件重命名为configure.in,并修改configure.in文件;
    3.3运行aclocal命令,产生aclocal.m4文件;
    3.4运行autoconf命令,产生configure文件;
    3.5新建Makefile.am文件,新建NEWS、 README、 ChangeLog 、AUTHORS文件;
    3.6修改Makefile.am,并运行automake -a命令;(automake --add-missing)
    3.7运行./confiugre脚本。
    3.8至此,Makefile已生产,然后执行make编译即可。

4.编译安装 



  1. make

  2. make install

至此,libmodbus库生成。


推荐阅读
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • Linux磁盘的分区、格式化的观察和操作步骤
    本文介绍了如何观察Linux磁盘的分区状态,使用lsblk命令列出系统上的所有磁盘列表,并解释了列表中各个字段的含义。同时,还介绍了使用parted命令列出磁盘的分区表类型和分区信息的方法。在进行磁盘分区操作时,根据分区表类型选择使用fdisk或gdisk命令,并提供了具体的分区步骤。通过本文,读者可以了解到Linux磁盘分区和格式化的基本知识和操作步骤。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
author-avatar
榜榜爱打球
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有