修改lib库对应的dll名称

这篇博客讲述了如何在生成Dll1.lib和Dll1.dll后,使用Dependency Walker查看导出函数,并将Dll1.dll重命名为Dll2.dll。然后通过手动创建或使用pexports工具生成Dll2.def文件,并使用lib.exe根据def文件生成新的Dll2.lib库。最后,创建DllTest程序验证Dll2.lib和Dll2.dll的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

修改lib库对应的dll名称


     在某些场景下,我们需要修改lib库对应的dll名称,如果直接使用notepad++等工具打开lib文件,修改其中的dll名称会直接导致lib文件破坏,vs编译报错。既然不能直接从lib下手,我们可以逆向考虑下,根据dll导出对应的def文件,再根据def文件生成对应的lib库。
     我们以一个简单的demo为例,使用vs2017新建一个dll工程,添加一个导出函数:
在这里插入图片描述

     编译该工程,在Debug目录下生成Dll1.lib,Dll1.dll两个库文件。我们使用Dependency Walker工具(C:\Program Files (x86)\Microsoft Visual Studio\Common\Tools\DEPENDS.EXE)打开Dll1.dll,可以看到只有一个导出函数:?Test@@YG_NHH@Z
在这里插入图片描述

     准备工作就绪,接下来开始根据Dll1.dll生成.lib文件,为了符合标题“修改lib库对应的dll名称”,我们将Dll1.dll重命名为Dll2.dll。

1, 根据dll生成def文件
     大家知道导出函数的实现有两种方式,一种是__declspec(dllexport),一种就是def文件(可以参照博客)。前者是需要修改代码才能实现的,所以我们只能根据def文件来得到导出库lib。首先根据dll中的导出函数生成对应的def文件,这里也有两种方法可以实现:
(1) 手动编写def文件
     Def文件的格式比较简单

LIBRARY xxx.dll
EXPORTS
Func1
Func2
 ….

     如何查看xxx.dll中的导出函数,上面已经介绍过了,使用Dependency Walker工具,那么对于Dll2.dll,对应的Dll2.def文件内容为:

LIBRARY Dll1.dll
EXPORTS
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simple Simple

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值