动态链接库编写调用.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Dll编写与调用 广联达研发中心TOT6 2006年7月20日 1.什么是DLL DLL :Dynamic Link Library 1.什么是DLL 静态链接 1.什么是DLL 2.为什么要用DLL Dll特点: 有利于应用程序的模块化 隐藏实现细节 便于复用 便于修改,拆卸简单 测试方便 共享代码、数据、资源 应用程序可以在运行时调入代码执行,而不是在编译时链接代码 可以一定程度上减少内存使用 3.编写DLL 跟编写应用程序几乎没有区别 Exports 函数声明 示范 procedure Swap(var ANum1, ANum2: Integer); 4.调用DLL 两种方式 隐式链接 Procedure 函数名;external Dll名称 name(Index) Dll中对应函数名(函数序号) 缺点: 1)即便是不用Dll中函数,在启动时也会加载Dll 2)如果Dll或Dll中的函数找不到,程序无法启动 显式链接 LoadLibrary,GetProcAddress,FreeLibrary 缺点: 频繁调用,牺牲一部分时间 5.Dll调试 单独调试 联合调试 6.Dll中导出对象 Dll和主调程序都需要对象的声明 示例 7.注意事项 声明一致 Dll中的声明,与主调程序中的声明要一致 Dll搜索顺序 Exe当前目录?Windows\System32?Windows\System?Windows?环境变量中的搜索路径 ShareMem 导出函数参数或返回值类型为string或动态数组,则Dll和主调函数的dpr文件中,uses子句的第一个单元,必须是 ShareMem 7.注意事项 register Left-to-right Routine Yes pascal Left-to-right Routine No cdecl Right-to-left Caller No stdcall Right-to-left Routine No safecall Right-to-left Routine No Question * 程序模块,它包括代码、数据或资源,能够被其他的Wi n d o w s应用程序共享。 基本与exe类似,除了不能独立运行 App1.dpr Uses Sort 编译器将函数和过程都编译到exe文件中 函数和过程的相对位置在链接时就已经确定 Unit Sort App2.exe Uses Sort Unit Sort App3.exe Uses Sort Unit Sort 多个程序调用一个单元同一个函数时,内存中存在多份该函数 App1.exe App2.exe App3.exe Sort.dll Uses Sort 动态链接 运行时,通过引用外部函数而将该函数链接到可执行文件中 Unit Sort App1.exe App2.exe App3.exe 地 址 映 射 多个应用程序通过映象进行来共享代码,理论上讲,最终内存中只有一份实例 建议使用SafeCall, StdCall 调用规则 调用规则 参数传递顺序 弹出栈中参数 是否使用寄存器 1.发起提问:什么是Dll,看大家对Dll认识如何? 简单地说就是一个可执行模块,其扩展名为.DLL ,或.sys,.drv,模块中包含了可以被其他应用程序或其他DLLs使用的例程和资源 2.给一个演示‘ShowDllMessage’ 跟 一般的的可执行程序扩展名为.EXE不同的是,DLLs没有通常的主程序,但它有多个执行入口。 静态链接是指编译器把要调用的函数和过程编译成可执行代码。以Delphi编译Application 为例讲解 链接用户的应用程序时,这些函数与过程便成为最终的可执行文件的一部分。也就是说,函数和过程都在程序的. e x e文件中。 Dll特点: 1)有利于应用程序的模块化 好处: a)Dcu也可以隐藏细节,但只能delphi用 b)一个Dll就是一个独立的模块,可以被复用,比如刚才的Sort单元 c)一旦Dll中的函数实现被修改,主调程序不用动,直接替换Dll即可,修改小;比如Sort单元,原实现用选择排序,后改为快速排序,如果使用Exe,需要把Sort单元在每一个App中替换一下,重新编译;而使用Dll时,只要重新编译Dll,将其覆盖原来App中的Dll d)各模块单独调试、测试,方便 有了Dll,程序就变成了一台机器,一个Dll就好像其中一个零件,可以任意拆卸 2) 3)应用程序可以在运行时调入代码执行,而不是在编译时链接代码,一定程度上减少内存使用, 暂时不用的Dll可以不用装载,到真正调用时再载入 示例:现编一个交换两个整数的程序,New Dll,空的工

文档评论(0)

飞扬的岁月 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档