由.def文件生成lib文件

【Tools】pexports生成标准def文件以及根据dll生成引导库lib的方法 ###Date: 2018-2-4 ================================================================= 1、根据dll生成引导库lib的方法      在程序使用Dll有两个加载方式,一种是动态方式,就是LoadLibrary载入Dll,然后用GetProcAddress来加载需要使用的Dll 阅读详情

        最近在学习curl库时,碰到一个问题,从官网上下载了一个lib版的,却发现只有.dll,没有lib文件,感觉很奇怪,google了之后才知道,原来库作者的用意是让用户自己生成lib文件,下载到的lib文件中含有.def文件。唉,用了vs有几个年头了,却连这么基础的问题都不知道,编译器是变得越来越智能了,只是让我们变得越来越傻了。下边我总结了一下由.def生成lib的方法。

        在使用 VC 链接 dll 时,通常需要一个导入库文件(.lib),但有时我们只有一个 dll 文件,怎么办呢?

        通常,在链接库文件时,需要一个 (.lib)文件,lib 文件分为两种:一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”)。VC 在链接 dll 时,需要根据导入库(.lib)来定位 dll 中的符号位置。没有这个文件,VC 链接器将不能正常链接。


解决此问题的办法有三个:

  1. 使用 DLL to Lib 工具,根据 dll 文件生成 lib 文件。
  2. 使用 LoadLibrary 函数加载 dll 文件,再使用 GetProcAddress 来查找函数地址,根据得到的函数指针来进行调用。
  3. 编写模块定义文件(.def),使用命令行生成 lib 文件。

以下重点介绍使用模块定义文件来生成 lib 的方法。

模块定义文件是用来描述 dll 文件的文本格式的文件,其格式如下:

LIBRARY libdll.dll      ;dll 文件的文件名
DESCRIPTION "描述信息"  ;描述信息,此行可以不要
EXPORTS
lib_add @1        ;函数描述
lib_sub @2        ;函数描述

第一行:在 LIBRARY 后面填 dll 文件的名字,分号后面是注释。

第二行:DESCRIPTION,描述信息,此行可以忽略

第三行:EXPORTS

第四行开始,是 dll 文件中函数的描述,可以使用 dumpbin /EXPORTS libdll.dll 命令查看,(其中,libdll.dll 是目标 dll 的文件路径)

以上文件写好后,保存成 libdll.def 文件,放在和 dll 文件相同的目录。

使用 lib /def:libdll.def 命令,可以生成 lib 文件。


使用VS的lib命令生成def和lib文件1 使用 visual studio command prompt命令窗口,执行如下命令:lib /def:libvlc.def /out:libvlc.lib / 立即下载

相关推荐

网络攻防实验——网络监听

利用CAIN实现ARP监听。

Trieyes_of_feng的博客 3196

由.def生成.lib文件

由.def生成.lib文件 Sqlite3一般都是Sqlite3.dll和Sqlite3.def文件,而在VC等集成开发环境学需要使用.lib文件。 所以,我们首先需要自己生成Sqlite3.lib文件

<云飞扬>的专栏 9821

(一)Tushare Pro教程:股票基本数据接口

 一直使用tushare作数据源,这里开个教程大家一起学习。 一、介绍        tushare是一个python股票数据源,现已升级到tushare pro版本,新版本在数据稳定性和获取速率上大幅提升。与wind、东财等收费数据源相比,tushare pro算是金融数据界的良心之作,其为从事金融工程、量化研究等方向的同学们提供了便利。tushare pro还有一点突出的特色就是已经将股票...

虎毛的博客 4万+

根据.def文件生成lib文件

原文 https://blog.csdn.net/woniuye/article/details/54692160 模块定义文件是用来描述 dll 文件的文本格式的文件,其格式如下: LIBRARY libdll.dll      ;dll 文件的文件名  DESCRIPTION “描述信息”  ;描述信息,此行可以不要  EXPORTS  lib_add @1        ;函数描述  l...

Oyasimi1412的博客 824

别只当玩具!聊聊这个555金属探测器电路背后的电磁感应与RLC调谐原理

本文深入解析了555金属探测器电路的工作原理,重点探讨了电磁感应与RLC调谐原理。通过分析电感线圈的电磁特性、RLC谐振电路的行为以及555定时器的多重功能,揭示了这一看似简单的装置如何实现金属检测。文章还提供了灵敏度优化方案和常见问题解决方法,帮助读者从科学角度理解这一实用技术。

weixin_29204205的博客 477

数字电路实验避坑指南:如何正确搭建主从JK触发器测试电路(附Proteus仿真)

本文详细解析了主从JK触发器的工作原理及实验搭建指南,重点解决了常见的Catching Problem现象,并提供了Proteus仿真优化方案。通过元器件选型、电路连接步骤和常见错误排查,帮助读者正确搭建测试电路,确保数字电路实验的稳定性和可靠性。

weixin_30790841的博客 469

用.def文件生成.lib文件,libtcc动态链接库导入Qt

在qt中包含libtcc.h的头文件。

weixin_45378526的博客 699

MinIO vs 华为云OBS:成本、性能与兼容性深度对比(含实测数据)

本文深度对比了开源对象存储MinIO与华为云OBS在成本、性能、兼容性及运维方面的核心差异。通过实测数据与全生命周期成本分析,为技术决策者提供选型依据。文章指出,MinIO在长期成本控制、性能深度优化及S3 API兼容性方面优势显著,而华为云OBS则提供开箱即用的便利性。

kmeans3miner的博客 593

使用def和dll文件生成lib

今日使用C++调用Sqlite库时,发现sqlite官方提供的sqlite-dll-win32-*压缩包中,只有dll文件和def文件。 1、在开始菜单中找到 “VS命令行工具” 并打开,该快捷方式一般在Visual Studio 20xx中。 2、切换到dll和def文件所在目录下。 3、执行命令:lib.exe /DEF:sqlite3.def /MACHINE:{ARM|ARM64|EBC|X64|X86},最后一个参数根据情况选择。更多参数请直接执行lib.exe查看。 补充: 在wind

0 error(s), 0 warning(s), all success 的博客 591

GR00TN1.7国内本地下载+模型下在+hugingface无法连接,本地模型下载

GR00TN1.7

alsj123456的博客 97

USB 网卡——RNDIS 控制消息流程

在其控制端点上获取控制消息时,设备必须在通信类接口的中断 IN 端点上返回通知,每当设备可以返回控制消息时,主机就会轮询该通知。需要注意的是,如果设备由于某种原因收到GET_ENCAPSULATED_RESPONSE,并且无法使用控制端点上的有效数据做出响应,则应返回设置为 0x00 的单字节数据包,而不是 stall 控制端点。下表中定义了此传输。收到 RESPONSE_AVAILABLE 通知后,主机使用下表中定义的GET_ENCAPSULATED_RESPONSE 传输从控制端点读取控制消息。

tyustli 371

从dll文件或者def文件生成lib文件

一、直接用def文件生成lib文件 开始-->运行-->cmd进入到dos下,进入def文件所在的目录,然后在输入lib /machine:IX86  /A.def  命令会生成A.lib文件 例子:lib /machine:IX86 /def:libgsl.def   A为文件名 二、从dll文件生成lib文件 先用dll文件生成def文件 例如:dumpbin /exports 

u010719432的专栏 890

【C语言】一文搞懂C语言文件操作

读写文件、文件相关库函数详解、文件缓冲区介绍

StackFrame 5657

VS中def文件对于生成dll和lib文件的作用

VS2005使用DEF文件来生成DLL与LibVS2005使用DEF文件来生成DLL与Lib时,与VC6的设置是不一样 的,VC6工程中,只要有DEF文件并将其添加到工程中,VC6就可以自动地生成DLL与其相应的Lib文件了。但是VS2005不一样,需要指定DEF文件,方法如下:例如:把 sqlite3.def 添加到工程中. 选择 工程 > 属性中的链接器,然后找到"输入"这一项

caomiao2006的专栏 7504

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

由DEF和DLL文件生成LIB文件步骤

(from http://blog.sina.com.cn/s/blog_4cb133e501000a3c.html) 由DEF和DLL文件生成LIB文件步骤用DEF和DLL文件生成LIB文件需要采用VC工具集中的LIB.EXE工具,最好的办法如下: 1.新建一个目录,例如:e:/mydll2.将def和dll文件拷贝到该目录下,例如:SQLITE3.DEF,S

shaolon的专栏 2006

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

def生成lib文件

VS环境下,如何由def生成lib文件

ranzy012的专栏 1296

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

从dll生成def文件 并生成lib文件

在开始菜单打开Visual Studio 2015\Visual Studio Tools\Windows Desktop Command Prompts\VS2015 x86 x64 Cross Tools Command Prompt 切换到DLL所在目录 在命令窗口输入 cd /d "你的DLL目录"回车切换到对应目录。 生成DEF文件dumpbin /exports zmotion_x...

hlday6的专栏 2605

windows 根据.dll生成.lib和.def文件

版权声明:本文为优快云博主「sdhongjun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/sdhongjun/article/details/80111451。由于从go build 编译出的产物只有一个dll和.h,所以需要根据dll产生.lib。在命令窗口输入 cd /d "你的DLL目录"回车切换到对应目录。修改def文件为标准def格式。切换到DLL所在目录。

kmfkmfsb的博客 916

Windows 下 由SQLite3.def文件生成SQLite3.LIB文件

1、先去官网下载 http://sqlite.org/download.html 源码、dll(包含sqlite3.def、sqlite3.dll文件)、tools(包含sqlite3.exe 文件):      sqlite-amalgamation-3250200.zip (2.17 MiB)   C source code as an amalgamation, ve...

qinbaby的专栏 6980

如何从DLL或者DEF文件生成LIB文件

如何从dll文件导出对应的lib文件?         Visual   C++   开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。         1、在命令行执行:     dumpbin   /exports   yourdll.dll   >   yourdll.def        

Rare's Tech-Blog 985

从动态库的def文件生成lib文件

以sqlite3为例,下载的文件中只有def文件,没有lib文件,想使用静态方式调用dll的情况下,就需要额外的.h文件和.lib文件存在。 .h文件可以从官方下载的sqlite-amalgamation-xxxxx.zip文件中得到,lib文件可以使用vc的命令行得到。 以VS2010为例,在开始菜单中找到“Microsoft Visual Studio 2010” --> ...

deshengtong1488的博客 281

vs2017根据def文件生成lib文件

vs2017根据def文件生成lib文件: 开始>vs2017>适用于vs2017的x64本机工具命令提示 cd进入包含def的文件路径 执行:lib /def:sqlite3.def /machine:x64 /out:sqlite3.lib

weixin_44876036的博客 590
上一篇: CURL库在C++程序中的运用浅析
下一篇: win32多线程-I/O完成端口
codinglf
博客等级 码龄16年 237粉丝 127原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值