由.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 / 立即下载

相关推荐

ESP32-S3数字麦克风入门:手把手教你用Arduino IDE读取MSM261S4030H0R的I2S数据

本文详细介绍了如何使用Arduino IDE读取MSM261S4030H0R数字麦克风的I2S数据,涵盖硬件连接、代码编写和数据可视化全流程。重点解决I2S引脚配置、环境噪声过滤和声波观察等实际问题,适合ESP32-S3开发者快速上手数字麦克风应用。

weixin_26742753的博客 318

由.def生成.lib文件

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

<云飞扬>的专栏 9821

【unity】Google 登录和Google支付接入unity

google 支付 google 登录

云渊寒烬 8495

根据.def文件生成lib文件

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

Oyasimi1412的博客 824

历年北京理工大学复试专业综合题

。

A place to record sth. 2万+

昇腾Ascend310b部署deepseek-r1-7b的学习记录

9.鲲鹏服务器+昇腾卡(Atlas 300I pro)搭建DeepSeek-R1-Distill-Qwen-7B(自己存档详细版)5.如何使用昇腾Ascend 300I Pro 310P芯片 单卡运行DeepSeek-R1-Distilled-Qwen-7B。6.鲲鹏服务器+昇腾卡(Atlas 300I pro)搭建DeepSeek-R1-Distill-Qwen-7B。7.鲲鹏+昇腾部署DeepSeek-R1-Distill-Qwen-32B+Open-webui。

maken 2369

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

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

weixin_45378526的博客 699

从零到一:TI AWR1843 Boost EVM与DCA1000 EVM的ADC数据采集实战指南

本文详细介绍了TI AWR1843 Boost EVM与DCA1000 EVM的ADC数据采集实战指南,涵盖硬件连接、软件配置、固件烧录、雷达参数设置及数据处理等关键步骤。通过MATLAB等工具,开发者可高效实现毫米波雷达数据采集,适用于自动驾驶、工业检测等领域。

weixin_29001327的博客 966

使用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

【RT-DETR有效改进】手把手带你调参RT-DETR,1:1复现官方版本实验环境

本文是带大家进行调参,利用ultralytics仓库1:1复现RT-DETR官方实验环境,从而在后期发表论文 的时候省去一些不必要的麻烦,例如被审稿人提出质疑,本文的调参内容均有依据,根据RT-DETR官方Github上发布的版本进行设置本文的调参以ResNet18为例,其余的何其的调参基本一致。RT-DETR剑指论文专栏,持续复现各种顶会内容——论文收割机RT-DETR。

Snu77的博客 9926

自动驾驶感知新方案:YOLOv13多模态(RGB+LiDAR+热成像)融合实战

YOLOv13的RGB+LiDAR+热成像多模态融合方案,解决了自动驾驶感知的鲁棒性问题,通过跨模态特征互补和注意力融合,实现了复杂场景下的高精度检测。本文从架构设计、数据预处理、核心模块实现到车载部署,完成了全流程实战。动态模态权重:根据场景自动调整各模态的权重(如黑夜场景提升热成像权重);端到端3D检测:直接从原始点云与图像进行3D检测,减少预处理步骤;轻量化优化:针对车载设备进一步剪枝量化,提升推理速度。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 534

从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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

caomiao2006的专栏 7504

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

由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

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

def生成lib文件

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

ranzy012的专栏 1296

从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、付费专栏及课程。

余额充值