dreameng

Windows编译libmodbus

2026/07/24
7
0

1. 下载源码发布版

https://github.com/stephane/libmodbus/releases

2. 在src/win32​目录下执行cscript configure.js​,将生成config.h文件

  1. 将config.h拷贝到上层目录下(src目录下)

3. 使用visual studio打开src/win32下的modbus-9.sln文件

4. 修改配置

  1. 配置管理器中:

    1. 将Debug修改为Release

    2. 将平台方案Win32复制为x64

  2. 修改配置类型

    image-eajL.png
  3. 在预处理定义中新增:

    W32DEBUG
    HAVE_CONFIG_H
    DLLBUILD
    CRTSECURE_NO_DEPRECATE=1
    CRTNONSTDC_NO_DEPRECATE=1

注:不添加这些预处理定义,依旧能编译成功,但是终端会有很多警告信息

5. 编译项目

  1. 生成或重新生成

  2. 编译好后,将生成dll和lib文件

问题

1. error LNK2019: 无法解析的外部符号 __imp_accept,函数 modbus_tcp_accept 中引用了该符号

解决:在链接器中添加依赖:ws2_32.lib

2. error LNK2019: 无法解析的外部符号 main,函数 "int cdecl scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ) 中引用了该符号

解决:修改配置类型为动态库,之前为应用程序,由于modbus.c中没有主函数,所以报错。