




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Windows应用程序与动态链接库,DLL简介,DLL是一个可以执行的并可以被多个Windows应用程序共享的程序模块(称为Module),模块中包含了一些可以被多个Windows应用程序或DLL共享的代码、数据和资源。动态连接库文件的扩展名一般是dll,也有可能是drv,sys和fon(它们分别对应的是设备驱动文件、系统文件和字体资源文件)。DLL可以有自己的数据段,但没有自己的堆栈,使用与调用它的应用程序相同的堆栈模式.,DLL简介,DLL是Windows最重要的组成要素,Windows中的许多新功能、新特性都是通过DLL来实现的Windows本身就是由许多的DLL组成的,它最基本的三大组成模块Kernel、GDI和User都是DLL,它所有的库模块也都设计成DLL。凡以.DLL、.DRV、.SYS和许多以.EXE为扩展名的系统文件都是DLL,打开WindowsSystem目录,就可以看到许多的DLL模块。,静态链接和动态链接,(1)静态链接传统的库函数是通过静态链接链到应用程序中的。这些库函数可能来自编程语言提供的标准库,也可能是由操作系统提供的API。,静态链接和动态链接,动态链接是指在把应用程序的目标代码链接成EXE文件时并没有将函数库中的函数复制到应用程序的可执行文件中,而是在程序运行时动态地加载所需的函数。,(2)动态链接,DLL特点,一个DLL在内存中只有一个实例,使之能高效经济地使用内存,降低可共享代码的内存使用量;DLL实现的代码封装性,使得程序简洁明晰,提供给每个程序组一致的APIs让用户进行调用,在用户程序运行时被载入;DLL的编制与具体的编程语言及编译器无关,只要遵守DLL的开发规范和编程策略,并安排正确的调用接口,不管用何种编程语言编制的DLL都具有通用性。,创建DLL,创建带有输出原型/结构/符号的头文件创建实现输出函数/变量的C/C+源文件编译器为每个C/C+源文件生成.obj文件链接程序结合.obj模块以生成DLL如果至上有一个函数/变量输出,则链接程序同时也生成.lib文件,DLL的调用,隐式调用隐式调用又称静态调用或装载时调用,对应于DLL的静态载入。要在应用程序中隐式调用某个动态链接库中的函数,一般要做以下两件事情:(1)用extern子句声明要调用的过程或函数及其所在的DLL文件名;(2)在应用程序中直接调用用extern子句声明的过程,DLL的调用,显示调用定义一个与调用函数一致的函数类型;用LoadLibrary或SafeLoadLibrary函数动态载入动态链接库;用GetProcAddress得到要调用的函数或过程的地址;利用定义的函数类型生成一个同类型的函数变量;进行函数调用;利用FreeLibrary函数卸载动态链接库。,DLL的调用,显示调用(只需获得DLL文件,并且知道要调用的函数名和参数)先用LoadLibrary加载dll,再用GetProcAddress检索所需的函数句柄,并且显式地用FreeLibrary卸载。隐式调用(需要.dll文件和生存的.lib库)应用程序链接前将.dll文件拷入应用程序的debug中,并将.lib文件引入。,DLL的导入和导出,DLL包含一个导出函数表,函数表包含了函数在DLL内的地址,可以通过函数的符号化名字和称为序号的整数识别这些函数。客户程序首先装入DLL时并不知道要调用的函数地址,但知道符号名或序号。动态链接的进程建立一张表,把客户的调用和DLL里的函数地址连结起来。在DLL代码中,必须显示声明导出函数:_declspec(dllexport)voidFunc(char,DWORD)应用程序方面需要声明对应的导入函数:_declspec(dllimport)voidFunc(char,DWORD),DLL函数的入口地址,BOOLWINAPIDllMain/函数名DllMain是区分大小写的(HANDLEhinstDll,/包含了DLL的实例句柄DWORDfdwReason,/系统调用该函数的原因LPVOIDlpReserved)/0表示显
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年海外代表处招聘笔试重点题
- 2025年美术设计师专业技能提升课程模拟考试题库及解析
- 2025年国际商务策划师资格考试试题及答案解析
- 2025年青少年宫招聘笔试答案解析
- 2025年C证安全员考试模拟题库答案解析
- 天上的街市课件教学设计
- 做纸袋教学课件怎么做
- 数位板教学课件怎么用
- 课件app排行榜教学课件
- 2025年学生铁路安全知识练习题含答案
- 摊铺机装箱单rp452l smc1lxf使用说明书
- 泵与风机课堂版
- 最全海外常驻和出差补助管理规定
- 运维服务服务器网络设备日常巡检报告
- 《老年学概论(第3版)》课件第一章
- GB/T 32177-2015耐火材料中B2O3的测定
- GB/T 13955-2017剩余电流动作保护装置安装和运行
- GB/T 11968-2020蒸压加气混凝土砌块
- 基础生态学-生态系统生态学课件
- 幼小可爱卡通家长会通用
- 《古代汉语(II)》课程教学大纲(本科)
评论
0/150
提交评论