- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章动态链接库.ppt
第10章 动态链接库 动态链接库的基本概念 动态链接库的创建 动态链接库的使用 动态链接库的基本概念 动态链接库(DLLs)是从C语言函数库和Pascal库单元的概念发展而来的。 几乎所有的Windows API都包含在DLL中 是可执行文件,它包含函数,数据或资源等其他应用程序可用到的东西 它可以在需要的时候随时装入, 在装入时或运行时 自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上Windows操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着。 显示的字体和图标存储在GDI.DLL中 显示Windows桌面和处理用户的输入所需要的代码被存储在一个User.DLL中 Windows编程所需要的大量的API函数也被包含在Kernel.DLL中 静态链接库 多个应用程序,多个静态链接库的副本 占用较多的内存资源 在静态库情况下,函数和数据被编译进一个二进制文件(通常扩展名为*.LIB) Visual C++的编译器在处理程序代码时将从静态库中恢复这些函数和数据并把他们和应用程序中的其他模块组合在一起生成可执行文件 静态链接,此时因为应用程序所需的全部内容都是从库中复制了出来,所以静态库本身并不需要与可执行文件一起发行 DLL可在函数调用其中的函数时,才被装入内存 DLL在内存中的一个副本可供多个应用程序使用 减少了内存和磁盘空间 DLL是包含若干函数、类或资源的库文件 函数和数据被存储在一个DLL上 ,可供其它DLL或应用程序使用 DLL的优点 共享DLL,节省内存,减少动态交换 不同程序设计语言之间可以共享DLL 减少可执行代码大小 重用代码 大工程可分为易管理的小工程 实现新功能更容易、软件升级 在动态库的情况下,有两个文件 引入库(.LIB)文件 DLL文件 引入库文件包含被DLL导出的函数的名称和位置 DLL包含实际的函数和数据 应用程序使用LIB文件链接到所需要使用的DLL文件 动态链接库的创建 Win32 Dynamic-Link Library方式 使用导出函数关键字_declspec(dllexport)创建 用.def文件创建 微软的Visual C++支持三种DLL Non-MFC Dll(非MFC动态库) Regular Dll(常规DLL) Extension Dll(扩展DLL) Win32 Dynamic-Link Library方式 (1)使用导出函数关键字_declspec(dllexport)创建 //Win32DLL.hextern C _declspec(dllexport) int Max(int a, int b);extern C _declspec(dllexport) int Min(int a, int b); //Win32DLL.cpp #includeWin32DLL.h int Max(int a, int b) { return (a=b)?a:b; } int Min(int a, int b) { return (a=b)?a:b; } 查看Debug目录,生成了两个文件 Win32DLL.dll Win32DLL.lib (2)用.def文件创建 删除头文件和实现文件中的包含部分 建立一个新文本文件Win32DLL_DEF.def DEF文件的格式 LIBRARY Win32DLL_Def EXPORTS Max :Max@1 Min :Min@2 实现文件 //Win32DLL_DEF.cpp int Max(int a, int b) { return (a=b)?a:b; } int Min(int a, int b) { return (a=b)?a:b; } MFC AppWizard[dll]方式生成常规/扩展DLL 常规DLL静态链接到MFC 常规DLL动态链接到MFC MFC扩展DLL MFC生成框架 可以使用MFC类 其它与Non-MFC大同小异 DLL的发布 *.h *.lib *.dll DLL的使用 隐式链接 显式链接 要先将MyDll.dll和MyDll.lib拷贝到某目录下面 Windows系统将遵循下面的有哪些信誉好的足球投注网站顺序来定位DLL: 1.包含EXE文件的目录 2.进程的当前工作目录 3.Windows系统目录 4.Windows目录 5.列在Path环境变量中的一系列目录 隐式链接 _declspec(dllimport) //*.h #pragma comment(lib,MyDll.lib)extern C_declspec(dllimport
文档评论(0)