.dll、.lib、.a的转换
文章目录
- 一、.dll生成导入库.a或者.lib
- 二、静态lib库转dll库
一、.dll生成导入库.a或者.lib
在使用Mingw进行开发时,有时依赖的库只有.dll文件,而Mingw需要的是.a文件,这时就需要通过.dll文件生成一个.a文件。
以libmysql.dll为例,说明如何生成libmysql.a:
gendef libmysql.dll
dlltool -d libmysql.def -D libmysql.dll -l libmysql.a -k
第一条命令会生成一个libmysql.def文件供第二条命令使用。
第二条命令使用前面生成的def文件以及dll文件生成.a文件并把导出名称中的@N去掉。
dlltool也可以替换成llvm-dlltool,但是需要指定目标机器
llvm-dlltool -m i386:x86-64 -d libmysql.def -D libmysql.dll -l libmysql.a -k
如果要生成.lib改一下扩展名即可。
其实目前Mingw GCC是可以直接使用MSVC生成的导入库lib的,只需要改一名扩展名为.a,并在前面加上lib前缀即可,比如有一个MSVC的导入库为abc.lib,改为libabc.a即可。
二、静态lib库转dll库
有时我们编译的是静态库lib,但是希望从这个lib生成对应的dll。
首先需要在控制台运行一下VS安装目录中的vcvars32.bat(以VS2015为例,路径:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin)以初始话编译环境,然后用类似于下面的命令:
link /out:xxxx.dll /implib:importxx.lib /dll /nologo /machine:YYY libstaticxx.lib /subsystem:console /def:xxxx.def
其中:
libstaticxx…lib是一个静态库
xxxx.dll 链接后产生的DLL
importxx.lib 生成导入库importxx.lib
YYY 是目标机器,可为x86或者x64
xxx.def 是导出符号文件,如果只有一个静态库lib,可以尝试:
dlltool -z xxx.def xxx.lib --export-all-symbols
如果直接在cmd下,没有调用vcvars32.bat脚本,则需要使用/nodedefault:xxx.lib,将dll依赖的系统lib文件添加到命令行中,这样比较麻烦,所以建议还是先运行vcvars32.bat脚本。
.dll、.lib、.a的转换相关推荐
- windows 调用linux .a lib,动态链接库及静态链接库(windows下的.dll .lib和linux下的.so .a)...
动态链接库及静态链接库(windows下的.dll .lib和linux下的.so .a) 库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀.例如:libhello.so libhello ...
- ffmpeg编译(生成Windows或Win32平台dll, lib)
ffmpeg编译(生成Windows或Win32平台dll, lib) 介绍:本文简要介绍通过cygwin环境来编译生成ffmpeg. 包括解码组件libfaad与libopencore-amrnb的 ...
- 备忘: VC++ 自动适用编译两种模式库文件 (DLL, LIB)
为什么80%的码农都做不了架构师?>>> 一个好的程序设计规划总会有属于自己的基础代码库.重用这些代码库,DLL或LIB方式最好的选择之一.在写新的项目或程序是,我们不可能每次 ...
- vs dll lib 使用记录
今天把学习opengl的项目从一个电脑copy到另一个电脑时候,发生了glu.dll找不到,导致项目起不来的问题.后来网上查找发现, 虽然我使用了静态连接 mt/mtd 编译, 但是有可能lib中并没 ...
- .h .dll .lib
.h为对一个函数的声明引用,include就是声明某个文件里的函数(内只有声明函数被引用了),编译时使用 .lib为链接时用的,存放的是对于DLL里函数的位置信息等,这样不必把所有dll里函数都加载到 ...
- vs2019 编译生成dll,lib,并做调用
一.前言 本文实验在VS2019将C++源码封装为dll.lib ,并做调用 二.欲封装代码 封装代码头文件和cpp文件如下: //util.h #ifndef _Util_H_ #define _U ...
- codeblocks 调用dll/lib
1.新建工程,参考网上一堆教程 2.在工程中添加文件: 文件包括当前项目主要文件,和库的头文件 3.设置编译选项 1)添加库文件,静态库添加.lib文件,动态库添加dll文件 说明:dll库文件最好放 ...
- 破解Foxit PDF SDK(DLL) 3.1, PDF转换到图片, 去除水印
将PDF转换到图片, 使用Foxit PDF Foxit PDF SDK(DLL) 3.1最新版本发布了, 使用它的免费版本Render PDF页面到图像的话,会有一个水印. 摸了几个小时,终于将这个 ...
- dumpbin发现没有入口函数_Dumpbin查看的dll/lib导出函数,不能重定向到文件问题
Dumpbin.exe 是vs官方自动的查看dll.lib导出函数的利器. 找到dumpbin.exe 下面是我电脑中的位置: 不同平台下的dumpbin 需要同目录下 link.exe文件才能运行. ...
- window下查看dll, lib文件是32位还是64位
工具:dumpbin.exe 依赖:link.exe, mspdb100.dll 命令: dumpbin /headers E:\math.dll 结果: Dump of file E:\math ...
最新文章
- php和python和java-Java、Python与PHP的虚拟机异同
- http staus汇总
- SPOJ - LCS Longest Common Substring(后缀自动机)
- HttpServletRequest简述
- Openstack面试题和知识点总结
- ArcSDE数据库连接(直连、服务连)与GT_Geometry存储配置图解
- 亚马逊最大无人售货超市开张,云端结账随拿随走
- VMware产品互操作性列表
- 编译安装nginx-1.6.0
- Mysql主备延迟的来源
- 用wxDraw.js制作酷炫的小程序canvas动画『wxDraw 小程序界的zrender』
- Redis 在Golang中使用遇到的坑
- 计算机上的证书安装不了,win10系统数字证书安装不上的详细教程
- java毕业设计题目大全
- java udp 断开_java – 如何中断阻塞调用UDP socket的receive()[复制]
- Linux架设DNS服务器(ChinaITLab.com 搜集整理)
- TRIZ创新方法#学习笔记02# |功能分析、技术矛盾和物理矛盾
- 【ENOVIA】MBOM经理概述 | 达索系统百世慧®
- PMP第十一节:项目风险管理
- 【思科模拟器实验】交换机端口聚合