从dll导出lib

DLL导出LIB工具详解与实战应用 MinGW是一个用于Windows的GNU工具链,它允许开发者使用GCC(GNU Compiler Collection)来编译Windows原生应用程序,而无需依赖第三方运行时库。MinGW支持C、C++等多种语言,并提供了Windows API的头文件和链接库。MSYS是Minimal System的缩写,它是一个轻量级的Unix Shell环境,基于Cygwin但更轻便。MSYS提供了一个命令行终端,支持常见的Unix命令如lscpmake。 阅读详情

一、使用VC++的工具DUMPBIN将DLL中的导出函数表导出到一定义(.DEF)文件
EXAMPLE:

DUMPBIN VideoDeCoder.dll /EXPROTS /OUT:VideoDeCoder.def
 二、将导出的.DEF文件整理为一符合.DEF个数的函数导出文件
EXAMPLE:VideoDeCoder.DEF 文件内容如下Dump of file VideoDeCoder.dll                                 
                                                                      
        File Type: DLL                                                
                                                                      
          Section contains the following exports for VideoDeCoder.dll 
                                                                      
                   0 characteristics                                  
            3D49E48F time date stamp Fri Aug 02 09:46:55 2002         
                0.00 version                                          
                   1 ordinal base                                     
                  11 number of functions                              
                  11 number of names                                  
                                                                      
            ordinal hint RVA      name                                
                                                                      
                  1    0 00010F60 _TM_ClearDecoderBuff@4              
                  2    1 00010E80 _TM_CloseDecoder@4                  
                  3    2 00010F00 _TM_DecodePicture@4                 
                  4    3 00010ED0 _TM_DecodePictureHeader@4           
                  5    4 00010FD0 _TM_GetFileEnd@4                    
                  6    5 00011030 _TM_GetUValue@4                     
                  7    6 00011060 _TM_GetVValue@4                     
                  8    7 00011000 _TM_GetYValue@4                     
                  9    8 00010E10 _TM_OpenDecoder@8                   
                 10    9 00010F30 _TM_ReturnType@4                    
                 11    A 00010F90 _TM_SetFileEnd@8                    
                                                                      
          Summary                                                     
                                                                      
                2000 .data                                            
                1000 .rdata                                           
                1000 .reloc                                           
               15000 .text
按照以下方法整理:
1)添加LIB说明 LIBRARY "VideoDeCoder"            ;"xx"为DLL名称
DESCRIPTION "VideoDeCoder library" 
2)去掉导出函数说明端以外的内容,在LIB说明下添加 "EXPROTS" 说明导出函数 LIBRARY "VideoDeCoder"
DESCRIPTION "VideoDeCoder library"

EXPORTS
            ordinal hint RVA      name                         
                                                               
                  1    0 00010F60 _TM_ClearDecoderBuff@4           
                  2    1 00010E80 _TM_CloseDecoder@4           
                  3    2 00010F00 _TM_DecodePicture@           
                  4    3 00010ED0 _TM_DecodePictureH           
                  5    4 00010FD0 _TM_GetFileEnd@4             
                  6    5 00011030 _TM_GetUValue@4              
                  7    6 00011060 _TM_GetVValue@4              
                  8    7 00011000 _TM_GetYValue@4              
                  9    8 00010E10 _TM_OpenDecoder@8            
                 10    9 00010F30 _TM_ReturnType@4             
                 11    A 00010F90 _TM_SetFileEnd@8
3)将所有的函数放至行首,去掉 "hint" 和 "RVA" 数据,留下函数的序号 "ordinal" ,在序号前加上 "@" 符号 形成 "_导出函数名@参数字节和 @序号" 此种格式(__stdcall 方式调用导出的函数符号是 "函数名称@参数字节和"). 最后形成.DEF文件如下: LIBRARY "VideoDeCoder"
  DESCRIPTION "VideoDeCoder library"

  EXPORTS
     
  TM_ClearDecoderBuff@4             @1   
  TM_CloseDecoder@4                 @2   
  TM_DecodePicture@4                @3   
  TM_DecodePictureHeader@4          @4   
  TM_GetFileEnd@4                   @5   
  TM_GetUValue@4                    @6   
  TM_GetVValue@4                    @7   
  TM_GetYValue@4                    @8   
  TM_OpenDecoder@8                  @9   
  TM_ReturnType@4                  @10   
  TM_SetFileEnd@8                  @11
 三、使用VC++的LIB工具,带/DEF:(.def文件名) /MACHINE:IX86(80X86机器),就输出符合VC++格式的的LIB文件了.
EXAMPLE:LIB /DEF:VideoDeCoder.def /MACHINE:IX86
 四、接时带上LIB文件链接;注意的是当有些动态库DUMPBIN的只有函数名,无"@nn"的参数格式,如C++Builder写的DLL,输出就只有函数名符号,链接时就会报错: error LNK2002:unresolved external symbol "functionname@nn" 提示程序中引入的函数符号无法识别,这时只要将DEF文件中相应的函数名称改为functionname@nn方式,重新建立 LIB,重新链接即可.

最后还有一句,要自动生成.h文件好象是不行的.因为dll里没有保存函数原型,需要反汇编并分析代码才知道每个函数的参数情况.

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/tingsking18/archive/2010/03/18/5394466.aspx

如何在Windows平台上使用VC++从DLL导出并生成.lib文件 pexports在第三章中,我们详细学习了pexports工具的基本命令语法、常见选项,通过具体的使用示例,加深了对如何在实际场景中导出DLL函数的理解。同时,我们也分析了在使用pexports过程中可能遇到的问题以及相应的解决措施。有了这些知识,相信读者们能够在处理DLL导出函数的任务中更加得心应手。在下一章,我们将进一步探索.lib文件创建的过程以及其在开发中的重要性。在讨论默认导出函数之前,我们需要了解它与显式导出函数的区别。 阅读详情

相关推荐

DLL导出生成lib文件

对于没有lib文件的DLL,在VC中需要引用,怎么操作呢。这个工具就是实现该功能的,附带一个命令使用例子。

从dll生成lib

过去一段时间断断续续在搞dll,最简单那种。一直疑虑有多少内容可以被反汇编出来。come across 这个题目,算是个开始。备忘 1。dumpbin   /exports   example.dll   >   example.def  2。 修改example.def 为def格式,如(例子来自网上): TM_ClearDecoderBuff@4 @1           

windtalkersm的专栏 950

微信开放标签wx-open-launch-app样式失效?手把手教你正确设置点击区域(附完整代码)

本文详细解析了微信开放标签`wx-open-launch-app`样式失效和点击无响应的常见问题,提供了完整的解决方案和代码示例。通过分析标签内部实现机制,指导开发者正确设置点击区域和样式,确保跨平台兼容性和用户体验优化。

joy55的博客 320

.dll、.lib、.h的生成导出和调用其他第三方库的相关这个

动态库相关的使用 目录 动态库相关的使用 1.选择生成.dll项目文件; 2.编写自己的多个.h和.cpp文件, 当功能函数,或者所需要的接口或者类都给完成了之后,选择生成(而不是点击调试运行 Crtl+F5) 3.将生成的*.dll和*.lib文件都直接导出到自定义的指定目录 4.VS 生成*.exe文件到指定目录 5.包含指定的.h和.lib文件夹,方便使用和调用。 ...

2731

统信UOS/麒麟Kylin OS下利用pyenv实现Python多版本开发环境搭建指南

本文详细介绍了在统信UOS和麒麟Kylin OS国产操作系统下使用pyenv搭建Python多版本开发环境的完整指南。从系统环境准备、pyenv定制安装到Python版本编译实战,提供了针对国产CPU架构的特殊优化方案和常见问题解决方法,帮助开发者高效管理不同Python版本需求。

sea99的博客 1051

保姆级教程:在RK3568上调试RGMII网口,从设备树到PHY驱动的完整避坑指南

本文提供RK3568开发板上RGMII网口调试的完整指南,涵盖硬件检查、设备树配置、驱动加载及性能优化。通过详细步骤和实战案例,帮助开发者避开常见陷阱,确保以太网功能稳定运行,特别关注PHY驱动和MDIO总线的调试技巧。

weixin_26821003的博客 321

dll生成对应的导入库lib

需要的工具:两个命令行工具,一个是dumpbin.exe,另一个是lib.exe(我的vs2008,在D:\Programe Files\Microsoft Visual Studio 9.0\VC\bin下)。由于是命令行工具,需要用cmd打开(运行/cmd)。也许打开的任意一个工具的时候会遇到一个问题:缺少mspdb80.dll,那在***\Microsoft Visual Studio 9.

manji_lee的专栏 1万+

影刀RPA进阶:Excel多条件筛选与数据提取实战

本文详细介绍了如何利用影刀RPA实现Excel多条件筛选与数据提取的自动化。通过拆解文本、数值、日期及颜色筛选等核心指令,并结合实战案例,指导用户构建稳健的销售数据提取机器人,从而高效处理复杂数据报表,提升工作效率。

onion的博客 529

编译生成C++导出函数dll,并在C#工程中测试

编译生成过程: 1.建立dll工程 选择新建visual C++的 这两个类型工程,都会出现下面界面,在这里设置生成dll: 2.设置项目: 项目属性中设置: 3.相关代码: 由于项目的名称是"TestCPPDLL",因此,会自动生成TestCPPDLL.h和TestCPPDLL.cpp两个文件,.h文件是要导出内容的声明文件,为了能清楚的说明问题,我们将Te...

weixin_30657999的博客 107

日语五十音图速记攻略:从形象联想法到实战训练

语言学习中的记忆编码与条件反射构建是高效掌握基础的关键。其核心原理在于通过将抽象符号与具象图像、故事或已知概念关联,利用大脑对视觉和叙事信息的天然高记忆效率,从而降低认知负荷,加速识别与反应速度。这一方法的技术价值在于将机械重复转化为意义联结,显著提升长期记忆的牢固度与提取速度。在日语学习这一具体应用场景中,五十音图作为表音文字系统,正是实践这一记忆技术的绝佳对象。通过系统化的形象联想、分组对比(如平假名与片假名的对应关系)以及间隔重复的实战训练,学习者可以高效攻克这一入门难关,为后续的词汇、语法学习铺设坚

weixin_29032489的博客 377

YOLOv8/v9轻量化优化:剪枝30%+蒸馏提精,模型体积缩至4MB还能跑Jetson

剪枝:用敏感度分析找到“可牺牲的30%”,不碰核心特征;蒸馏:借大模型的“经验”补回精度,甚至反超原始小模型;量化:针对边缘设备特性优化量化策略,把体积和延迟压到最低。如果你的项目卡在边缘部署(速度慢/体积大),按“剪枝→蒸馏→量化”三步走,90%能在Jetson上跑通30FPS+的实时检测。需要轻量化模型文件(v8s/v9s剪枝蒸馏后权重)、剪枝工具和Jetson部署脚本的,评论区扣“轻量化”,直接发你可运行版本~

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

DLL导出LIB工具:简化C99标准下的DLL与LIB文件生成

DLL导出LIB工具:简化C99标准下的DLL与LIB文件生成 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在软件开发过程中,动态链接库(DLL)和库文件(LIB)是不可或缺的组件。然而,在C99标准下,直接在Visual Studio(VC)环境中生成DLL文件并导出为LIB文件并非易事。为了解决这一难题,我们推出了“DLL导出LIB工具”。该工具通过mingw+...

gitblog_09756的博客 457

大模型之Spring AI实战系列(一):基础认知篇 - 开启智能应用开发之旅

Spring AI 是一个轻量级开源框架,旨在简化 AI 模型在企业级 Java 应用中的集成与管理。它提供了跨多个 AI 服务提供商的便携式 API,支持聊天、文本转图像、嵌入式模型等多种功能,并兼容主流的 AI 模型提供商如 OpenAI、Google 等。Spring AI 的核心功能包括结构化输出、向量数据库支持、工具/函数调用、可观察性、文档摄取 ETL 框架、AI 模型评估等。

寻道AI,探索AI无限可能! 6362

DLL导出LIB工具

DLL导出LIB工具 去发现同类优质开源项目:https://gitcode.com/ 简介 本仓库提供了一个名为“dll导出lib工具”的资源文件。该工具主要用于在C99标准下,通过mingw+msys环境生成DLL文件,并将其导出为LIB文件。由于C99标准无法直接在Visual Studio(VC)环境下编译,因此需要借助mingw和msys来完成这一过程。 使用说明 环境准备: 安装...

gitblog_09709的博客 379

GEE:基于 Landsat 数据集生成(1986-2024)月度合成地表温度(LST)时间序列数据

优快云@_养乐多_本文将介绍使用 Landsat 时间序列计算(1986-2024)月度合成地表温度(LST)时间序列数据集的代码。

养乐多的博客 1711

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

导出DLL的LIB

一.导出DLL的LIBVisual C++ 开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。1、在命令行执行:dumpbin /exports yourdll.dll > yourdll.def2、编辑 yourdll.def 文件,使之格式与.def文件格式一致。比如:EXPORTS;       fn

zafair的专栏 704

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【亲测免费】 DLL导出LIB工具:简化C99标准下的DLL与LIB文件生成

DLL导出LIB工具:简化C99标准下的DLL与LIB文件生成 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在C99标准下,开发者常常面临一个难题:如何在Visual Studio(VC)环境下编译并使用C99标准的代码。由于VC环境不直接支持C99标准,开发者需要借助mingw和msys来生成DLL文件。然而,生成的DLL文件在VC环境下无法直接使用,需要进一步将...

gitblog_09730的博客 418

ssm框架搭建

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

WINCC7.3破解文件

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

利用dll导出lib文件

生成def文件: 方法一: 1. 用vc++提供的命令行工具dumpbin生成一个dll导出函数信息文件    dumpbin /exports mydll.dll > mydll.def 2. 修改mydll.def文件的格式为标准def文件的格式    LIBRARY     MYDLL.DLL    EXPORTS        func1       

messagebox的专栏 991

DLL导出LIB文件

(6条消息) 从DLL导出LIB文件_mylaf的专栏-优快云博客

u011495929的博客 240

Windows API DLL导出Lib文件

Windows API DLL导出Lib文件,供VC隐式调用DLL所用。Visual C++ 开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。1、在命令行执行:dumpbin /exports yourdll.dll > yourdll.def2、编辑 yourdll.def 文件,使之格式与.def文件格式一致。比

石头记 1400

从dll文件导出对应的lib文件

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

zzia72的专栏 623

DLL 导出 LIB 并调用

使用VS2010 自带工具: DUMP /exports xxx.dll 导出函数表 生成xxx.def文件: EXPORTS func1@0 @1 func2@0 @2 注: @0表示没有参数, 如果有参数, 用参数*4, 如一个参数@0改为@4, 两个参数@0改为@8, 与此类推,修改后用LIB重新生成 LIB库 用lib.exe lib /def:xxx.def ...

romfile的专栏 908

从DLL导出LIB文件

Q:从动态链接库DLL文件导出LIB文件 详情: 在Windows开发sqlite相关程序时,自己编译SQLite源码以生成dll或lib还是比较麻烦的,所以直接下载sqlite-dll-******.zip。这个包解压出来只包含sqlite3.dll和sqlite3.def两个文件,没有lib文件。 常见的还有libcurl库含有.a文件,没有lib文件。 解决: 使用Virsual ...

mylaf的专栏 3776

dll导出def和lib文件

在Windows下编程的同学,可能都知道可以使用Depends这个工具查看dll依赖项和导出符号, 却很少知道在命令行下,由两个更好用的命令,分别是dumpbin和lib,这是VS安装目录下的两个程序。 dumpbin 用法: DUMPBIN [选项] [文件] 选项: /ALL /ARCHIVEMEMBERS /CLRHEADER /DEPENDENTS ...

HW的博客 3691
上一篇: 管理应用程序编程: WBEM 和 CIM 简介
下一篇: 周总结
houbaochen
博客等级 码龄18年 20粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值