当前位置: 首页 > ds >正文

如何在 MinGW 和 Visual Studio (MSVC) 之间共享 DLL

如何在 MinGW 和 Visual Studio (MSVC) 之间共享 DLL


.dll.a.lib 是什么?

1. .dll.a(MinGW 下的 import library)

  • 作用:链接时告诉编译器如何调用 DLL 中的函数。
  • 谁用它:MinGW 编译器(如 g++)。
  • 来源:使用 dlltool 或编译 DLL 时自动生成。

2. .lib(MSVC 下的 import library)

  • 作用:和 .dll.a 一样,用于链接阶段告诉 MSVC 编译器如何调用 DLL 中的函数。
  • 谁用它:Visual Studio(MSVC)。
  • 来源:由 lib.exe 工具或 DLL 项目自动生成。

✅ 你有哪些文件需要共享?

例如:

  • log4cpp.dll(运行时文件)
  • log4cpp.dll.a(MinGW链接时使用)
  • log4cpp.def(可选,导出函数定义)
  • log4cpp.lib(你可能需要为 VS 生成)

✅ 使用场景举例

场景所需文件编译器
MinGW 使用 log4cpp.dlllog4cpp.dll.a, log4cpp.dllg++
MSVC 使用 log4cpp.dlllog4cpp.lib, log4cpp.dllcl (VS)

✅ 如何从 .dll.a / .def 生成 .lib(供 VS 用)

方法一:你已经有 .def 文件(推荐)

lib.exe /def:log4cpp.def /out:log4cpp.lib /machine:x64

方法二:从 .dll 生成 .def(如果没有 .def 文件)

# 第一步:dump 出导出表
dumpbin /exports log4cpp.dll > log4cpp.exports.txt# 第二步:手动或用脚本生成 log4cpp.def
# 格式大致如下:
LIBRARY log4cpp.dll
EXPORTSsymbol1symbol2...# 第三步:生成 .lib
lib.exe /def:log4cpp.def /out:log4cpp.lib /machine:x64

✅ MinGW 怎么生成 .dll.a.dll

你已经在用 ADD_LIBRARY(... SHARED ...)CMAKE_DEBUG_POSTFIX "d",CMake 自动生成 .dll.dll.a

liborocos-log4cpp.dll  # 运行时库
liborocos-log4cpp.dll.a  # 供 g++ 链接用

✅ 在 VS 中使用 MinGW 编译的 DLL

你需要:

  1. 生成 log4cpp.lib(方法见上)
  2. 添加 .lib 到 VS 工程的 Linker -> Input
  3. 添加 log4cpp.dll 到可执行文件目录(或放在 PATH 下)
  4. 添加头文件路径(即 include)
http://www.xdnf.cn/news/2138.html

相关文章:

  • Freertos--统计所有任务栈信息以及CPU占比和钩子函数
  • Flutter Dart 集合类型List Set Map详解军 以及循环语句 forEaclh map where any every
  • 【动手学大模型开发】VSCode 连接远程服务器
  • 苹果iosApp提交审核常见问题--内购订阅篇
  • 技术视界 | 从自然中获取智慧: 仿生机器人如何学会“像动物一样思考和行动”
  • 《算法笔记》4.2小节——算法初步->哈希
  • 【Redis】hash类型
  • 每日c/c++题 备战蓝桥杯(P1252洛谷 马拉松接力赛)
  • 《深入理解 AOP》
  • 数图信息科技邀您共赴第二十五届中国零售业博览会
  • spring中的@bean注解详解
  • Springoot、Flowable快速学习
  • 制作一款打飞机游戏25:添加数据
  • C++与Python编写二进制转十进制
  • 一种双模式机器人辅助股骨干骨折钢板植入方法
  • 【AI平台】n8n入门3:第二个工作流,链接网上大模型(含三种方式)
  • wireshark从HEX转储导入使用方法
  • 数学基础 -- 欧拉恒等式的魅力:让复数旋转起来!
  • MATLAB基础应用精讲-【基础知识篇】发布和共享 MATLAB 代码
  • 网络流量分析 | 流量分析基础
  • 机器学习基础 - 回归模型之线性回归
  • SD2351核心板:重构AI视觉产业价值链的“超级节点”
  • 【高频考点精讲】JavaScript事件循环机制:从宏任务微任务到渲染时机
  • MySQL数据库(13) 用户管理
  • Redis高效赋能机器学习实战:用FastAPI打造智能钓鱼邮件识别与缓存系统全流程解析
  • nacos设置权重进行负载均衡不生效
  • MongoDB 图片 URL 存储异常问题解决方案
  • C++入侵检测与网络攻防之网络嗅探以及ARP攻击
  • 【论文阅读】平滑量化:对大型语言模型进行准确高效的训练后量化
  • Linux文件管理(2)