MFC 教程 第13章动态链接库_课件.ppt

MFC 教程 第13章动态链接库_课件.ppt

ID:57058315

大小:63.50 KB

页数:38页

时间:2020-07-30

MFC 教程 第13章动态链接库_课件.ppt_第1页
MFC 教程 第13章动态链接库_课件.ppt_第2页
MFC 教程 第13章动态链接库_课件.ppt_第3页
MFC 教程 第13章动态链接库_课件.ppt_第4页
MFC 教程 第13章动态链接库_课件.ppt_第5页
资源描述:

《MFC 教程 第13章动态链接库_课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第13章动态链接库1本章主要内容动态连接库的概念及其组成动态连接库的创建动态连接库的使用2概论先来阐述一下DLL(DynamicLinkableLibrary)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EX

2、E独立的DLL文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。3对动态链接库,我们还需建立如下概念:(1)DLL的编制与具体的编程语言及编译器无关   只要遵循约定的DLL接口规范和调用方式,用各种语言编写的DLL都可以相互调用。譬如Windows提供的系统DLL(其中包括了Windows的API),在任何开发环境中都能被调用,不在乎其是VisualBasic、VisualC++还是Delphi。4(2)动态链接库随处可见   我们在Windo

3、ws目录下的system32文件夹中会看到kernel32.dll、user32.dll和gdi32.dll,windows的大多数API都包含在这些DLL中。kernel32.dll中的函数主要处理内存管理和进程调度;user32.dll中的函数主要控制用户界面;gdi32.dll中的函数则负责图形方面的操作5(3)VC动态链接库的分类   VisualC++支持三种DLL,它们分别是Non-MFCDLL(非MFC动态库)、MFCRegularDLL(MFC规则DLL)、MFCExtensionDLL(MFC扩展DLL)。   非MFC动

4、态库不采用MFC类库结构,其导出函数为标准的C接口,能被非MFC或MFC编写的应用程序所调用;MFC规则DLL包含一个继承自CWinApp的类,但其无消息循环;MFC扩展DLL采用MFC的动态链接版本创建,它只能被用MFC类库所编写的应用程序所调用。613.1动态链接库的基本概念Windows使用DLL实现程序模块共享。其特点是:动态链接的;公用的;自动卸载。DLL由全局数据、可导出函数、类和资源组成。主要任务:为使用它的各应用程序提供可调用的导出函数7根据编写规范,Windows必须查找并执行DLL里的DllMain函数作为加载DLL的依据,

5、它使得DLL得以保留在内存里。这个函数并不属于导出函数,而是DLL的内部函数。这意味着不能直接在应用工程中引用DllMain函数,DllMain是自动被调用的。8动态链接库的入口函数BOOLAPIENTRYDllMain(HANDLEhModule,//指向Dll本身的句柄DWORDul_reason_for_call,//Dll被调用的原因LPVOIDlpReserved)//系统所保留的参数{//可以在这里编写DLL的初始化代码returnTRUE;}13.1动态链接库的基本概念9DllMain函数在DLL被加载和卸载时被调用,在单个线程启

6、动和终止时,DLLMain函数也被调用,ul_reason_for_call指明了被调用的原因。原因共有4种,即PROCESS_ATTACH、PROCESS_DETACH、THREAD_ATTACH和THREAD_DETACH,以switch语句列出。10BOOLAPIENTRYDllMain(HANDLEhModule,DWORDul_reason_for_call,LPVOIDlpReserved) {  switch(ul_reason_for_call)  {   caseDLL_PROCESS_ATTACH:      …caseDL

7、L_THREAD_ATTACH:    …caseDLL_THREAD_DETACH:    …caseDLL_PROCESS_DETACH:    … }  returnTRUE; }11导出函数和内部函数DLL中定义的供外部应用程序调用的函数,叫做导出函数(export function);只为在DLL内部调用的函数叫做内部函数(internal function);导出函数在客户端叫做导入函数。13.1动态链接库的基本概念1213.2动态链接库的创建设计DLL的主要工作是编写库中的函数,方法与编写一般函数的方法基本相同。但要对库中的函数进

8、行必要的声明,说明哪些函数是可以导出的,哪些不可以.声明DLL导出函数有两种方法:在.def文件中声明;使用关键字_declspec(dllexpor

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。