在Windows平台上使用MSYS编译一些开源代码时经常只会生成DLL文件,而如果打算在VS中使用该DLL则需要有对应的LIB文件,下面以编译oRtp为例来看看如何从DLL文件中导出LIB文件。

需要进过两个步骤:由DLL文件生成def文件;由def文件导出Lib文件。

一、通过pexports或微软编译环境自带的dumpbin.exe导出DLL对应的def文件
方法一: pexports ***.dll > ***.def
方法二: dumpbin /exports ***.dll > ***.def
其中***代表你的dll的文件名以及要生成的def的文件名。
我推荐使用pexports,因为它导出的def是标准的def格式,可在http://sourceforge.net/projects/mingw/files/MinGW/Extension/pexports/下载;而微软的dumpbin导出的def需要我们稍微修改为标准的格式。下图是pexports和dumpbin生成的def文件,如果你用dumpbin,则需要将其生成的def文件修改为pexports生成的def的格式。

图一、pexports生成的def文件格式

图二、dumpbin生成的def文件格式(它携带了更多的信息,我们需要修改成图一的格式)

二、通过微软编译环境自带的lib.exe程序根据.def生成我们需要的lib文件
lib /def:***.def /machine:i386 /out:***.lib
一般会出现如下的错误报告,则需要在网上下一个mspdb80.dll,放在VC安装目录的bin下,例如D:\Program Files\Microsoft Visual Studio 9.0\VC\bin下即可。

以下是oRtp的Dll文件生成Lib文件的过程:

如何从dll文件导出对应的lib文件? 
 
Visual   C++   开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个

工具即可从dll导出其对应的lib。 
 
1、在命令行执行: 
dumpbin   /exports   yourdll.dll   >   yourdll.def 
 
2、编辑   yourdll.def   文件,使之格式与.def文件格式一致。比如: 
EXPORTS; 
              fn1; 
              fn2; 
 
3、在命令行执行: 
lib   /def:yourdll.def   /machine:i386   /out:yourdll.lib

新dll的导出函数全部做成其他dll的forward,不用写thunk代码
搜下dll forward技术,用progma 链接指令就可完成

dll文件导出对应的lib文件相关推荐

  1. linux查看lib文件,linux下的 lib文件的学习思考

    说到这个LIB文件,先从一个小故障说起. 某日开发说,一台测试用虚机可以PING通SSH不能连了.运维同学就赶紧去查,SSHD_CONFIG配置文件都正确啊,一点错误都没有,那为什么呢? 测试下,不管 ...

  2. 如何生成lib文件 采用VS2017生成lib文件(静态库文件)以C++语言为例 静态库的生成和使用

    开发环境 VS2017  先展示项目解决方案的结构,代码量很小 第一部分:生成静态库,即.lib文件 第一步:新建一个空项目 打开VS2017,文件->新建->项目,选择"空项目 ...

  3. 服务器上文件导出到本地,服务器文件导出到本地

    服务器文件导出到本地 内容精选 换一换 您可以将当前帐号下拥有的所有裸金属服务器信息,以CSV文件的形式导出至本地.该文件以"裸金属服务器-区域-当前日期"命名,记录了裸金属服务器 ...

  4. 前端JS/VUE如何生成Vcard或其他文件--导出任意后缀的文件

    有个需求是在前端由用户输入姓名+电话,然后生成一个Vcard,也就是.vcf格式文件,就是导入手机的通讯录中,这个做手机测试的都知道.其实不一定是.vcf格式的文件,其他的格式文件也可以,如.txt等 ...

  5. 【keil5应用】如何生成lib库文件,以及使用lib文件

    一.制作库文件 1.准备一个基于Keil5的项目工程 此处使用原子例程,都是一个流程. 2.考虑制作库文件内容 此工程是跑马灯工程,故"FWLIB""CORE" ...

  6. php把文件导出为xlc,XLC文件扩展名 - 什么是.xlc以及如何打开? - ReviverSoft

    你在这里因为你有,有一个文件扩展名结尾的​​文件 .xlc. 文件与文件扩展名 .xlc 只能通过特定的应用程序推出.这有可能是 .xlc 文件是数据文件,而不是文件或媒体,这意味着他们并不是在所有观 ...

  7. 实现文件导出功能(Excel文件形式):全部导出

    1,封装参数: 如果做查询条件,或者参数之间不是属于一个实体类对象,封装成map 如果做写数据,并且参数本来就是属于一个实体类对象,封装成实体类对象. 2,使用jquery获取或者设置指定元素的val ...

  8. .Net/C#把数据库文件导出成为Excel/CSV文件

    通过已下步骤进行写入如有报错或缺少方法请在下方留言 我这里使用的是Sql Server数据库 EXCEL文件里面的标题字段必须和代码写的字段一样否则查找不到该字段 数据库字段的限制:比如说你的数据库有 ...

  9. BXL文件怎样转换为AD LIB文件

    https://jingyan.baidu.com/article/48b558e326e1b17f39c09a57.html 转载于:https://www.cnblogs.com/qdrs/p/7 ...

最新文章

  1. spring boot mysql和mybatis
  2. 添加Altium Designer 3D封装
  3. guava之preconditions
  4. html css基础页面,一、必知HTML基础
  5. C# 建立Socket连接 持续发送屏幕截图
  6. 大数据之-Hadoop3.x_MapReduce_MapJoin案例需求分析---大数据之hadoop3.x工作笔记0133
  7. 一年级上册计算机教学计划,一年级上学期教学计划
  8. win7系统无法正常启动
  9. javascript 实现table展开折叠
  10. c++计算一维数组中的最大元素
  11. vue中使用ajax全局配置,jQuery和vue 设置ajax全局请求
  12. 30分钟学会js新特性
  13. python爬虫使用session保持登录状态
  14. 中值滤波 matlab程序实现(一)
  15. python长什么样子图片_怎么样提升python图片文字识别精度,有什么库或是方法吗?...
  16. cvs配电保护断路器_施耐德CVS系列热磁式保护断路器三段保护断路器
  17. 以程序员的视角带你看西安
  18. java计算机毕业设计政务大厅管理系统源码+数据库+系统+部署+lw文档
  19. WebSocket四种事件详解 入门篇(二)
  20. 让数据中心运维管理高效简单

热门文章

  1. Spring框架总结【无比详细】
  2. 关于android开发工具无法识别android手机的情况总结
  3. CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning,squeezenet
  4. Deep Learning(深度学习)之(三)Deep Learning的常用模型或者方法
  5. react 自定义日历 手把手教你
  6. C++: 计算累积密度函数 (CDF) 非中心Beta分布(附完整源码)
  7. intellij idea 2018.1中文破解版 附注册码汉化包
  8. 学编程该如何入门?看什么书?
  9. 身在互联网,该如何提高自身的核心竞争力?
  10. VC++多线程封装类(附源码)