网站大量收购独家精品文档,联系QQ:2885784924

动态链接库(DLL)应用编程课件.pptVIP

动态链接库(DLL)应用编程课件.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

動態鏈接庫(DLL)應用編程10.1循序漸進學理論10.1.1動態鏈接庫(DLL)概述1.DLL的概念DLL是一個可以執行的並可以被多個Windows應用程式共用的程式模組(稱為Module),模組中包含了一些可以被多個Windows應用程式或DLL共用的代碼、數據和資源。動態連接庫檔的擴展名一般是dll,也有可能是drv,sys和fon(它們分別對應的是設備驅動檔、系統檔和字體資源檔)。2.靜態鏈接和動態鏈接(1)靜態鏈接傳統的庫函數是通過靜態鏈接鏈到應用程式中的。這些庫函數可能來自編程語言提供的標準庫,也可能是由操作系統提供的API。(2)動態鏈接動態鏈接是指在把應用程式的目標代碼鏈接成EXE檔時並沒有將函數庫中的函數複製到應用程式的可執行檔中,而是在程式運行時動態地加載所需的函數。3.使用DLL的優點使用動態鏈接庫還有以下優點:(1)應用範圍廣。(2)便於開發大型軟體。(3)便於對系統進行升級。(4)隱藏細節。(5)獨立於編程語言。10.1.2動態鏈接庫(DLL)編寫根據動態鏈接庫完成的功能,可把DLL分成三類:完成一般功能的DLL、用於數據交換的DLL和用於窗體重用的DLL。【例10-1】創建一個動態鏈接庫,該動態鏈接庫中包含兩個函數,分別用於求三個數的最大值和最小值。為編寫該動態鏈接庫,需經過以下步驟:(1)建立DLL程式框架在Delphi7.0集成環境中,執行【File】→【New】→【Other】命令,將會出現【NewItems】對話框窗口,在該窗口中找到【DLLWizard】圖示,如圖10-3所示。圖10-3“NewItems”對話框2.建立過程和函數為該動態鏈接庫專案增加如下兩個函數:FunctionMax(x,y,z:Integer):Integer;stdcall;//求三個數的最大值函數·········FunctionMin(x,y,z:Integer):Integer;stdcall;//求三個數的最小值函數·········(3)用exports語句聲明供其他應用程式

調用的函數和過程名函數或過程定義好後,為了能夠被其他應用程式調用,還必須用Exports子句把函數名列出。本例使用的Exports語句如下:exportsMax,Min;Exports語句的格式與功能如下:exportsentry1,entry2,……,entryn;(4)生成DLL檔執行【Project】→【BuildExam_10_1】命令(“Exam_10_1”為動態鏈接庫專案檔案名),將自動生成名為“Exam_10_1.dll”的動態鏈接庫檔。10.1.3加載動態鏈接庫(DLL)的方法1.靜態載入DLL這種方法是將DLL檔映像映射到調用進程地址空間的最簡單的辦法。靜態載入DLL的前提是在編譯之前已經明確知道要調用DLL中的哪幾個函數,編譯時在目標檔中只保留必要的鏈接資訊,而不包含DLL函數的代碼。在程式執行時,利用鏈接資訊加載DLL函數代碼並在內存中將其鏈接進入調用程式的執行空間,從而實現了代碼的重用。2.動態載入DLL動態載入方式是指在編譯之前並不知道將會調用哪些DLL函數,完全是在運行過程中根據需要決定應調用哪些函數,並用LoadLibrary函數加載動態鏈接庫到記憶體,用GetProcAddress函數動態獲得DLL函數的入口地址。動態調用使用的WindowsAPI函數主要有3個,分別是LoadLibrary、GetProcAddress和FreeLibrary。(1)LoadLibrary函數[格式]:functionLoadLibrary(LibFileName:PChar):Thandle;[功能]:加載由參數LibFileName指定的DLL檔。(2)GetProcAddress函數[格式]:functionGetProcAddress(Module:Thandle;ProcName:PChar):TfarProc;[功能]:返回參數Module指定的模組中,由參數ProcName指定的過程或函數的入口地址。(3)FreeLibrary函數[格式]:procedureFreeLibrary(Module:Thandle);[功能]:將由參數Module指定的DLL檔從記憶體中卸載1

文档评论(0)

子不语 + 关注
官方认证
服务提供商

平安喜乐网络服务,专业制作各类课件,总结,范文等文档,在能力范围内尽量做到有求必应,感谢

认证主体菏泽喜乐网络科技有限公司
IP属地山东
统一社会信用代码/组织机构代码
91371726MA7HJ4DL48

1亿VIP精品文档

相关文档