欢迎来到天天文库
浏览记录
ID:50318741
大小:97.00 KB
页数:24页
时间:2020-03-08
《C++程序设计与应用 教学课件 作者 周仲宁courseware18.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《C++高级编程》第18章动态链接库本章主要教学内容什么是动态链接库(DLL);动态链接库有哪些种类,各有些什么特点;如何在VisualC++中生成和使用动态链接库;利用VisualC++软件开发环境编制一个DLL程序的实例;18.1动态连接库(DLL)概述通过创建和使用DLL,可以方便地实现多个用户对DLL的共享(通过库文件和函数调用说明文件),从而减少编程的工作量;DLL类似C源文件,而且没有对API函数的限制,可以提供函数及各种资源和数据;通过DLL的使用可方便的实现应用程序的本地化;DLL的作用
2、:DLL与可执行文件的区别和联系:DLL要求一个DEF(模块定义文件);DLL要求一个DllMain()的入口点;DLL可以装入,但不能执行;18.1动态连接库(DLL)概述DLL是应用程序中的一段程序,是一个可以从.exe文件中单独执行的模块。DLL是其它应用程序在执行时能够动态链接和调用的一组服务或函数。DLL是Windows程序设计非常有用的一种方法。在生成可执行文件时,不需要链接DLL,在运行时才动态装载。18.1.1DLL的定义由MFCAppWizard支持生成的DLL的类型:Win32DLL
3、空DLL工程简单的DLL工程导出变量、函数和类的DLLMFCAppWizardDLL静态链接MFC的RegularDLL动态链接MFC的RegularDLL动态链接MFC的扩展(Extension)DLL18.1.2DLL的种类区别:使用静态链接库,其函数代码包含在应用程序中;使用动态链接库,只需包含函数信息即可;动态链接库的优点:有利于程序共享;多个程序使用DLL的单一映射,节约内存空间;通过程序拆分,有利于程序升级;可以节约大量硬盘空间;18.1.3动态链接库和静态链接库的比较18.2DLL的基本理
4、论⒈DllMain函数应用程序使用LoadLibrary和FreeLibrary等函数以及进程、线程启动和终止时。18.2.1DLL的入出口函数系统调用DLL的入出口函数,以完成DLL的初始化和终止工作。它是一般DLL的入出口函数,需自己编写代码它在一个DLL被调用和被撤除时被调用函数结构:p8518.2.1DLL的入出口函数⒉MFC的RegularDLL入出口它由MFC提供,不必自己编写代码;装载DLL时调用成员函数InitInstance,卸载时调用ExitInstance18.2.2DLL的链接方
5、式⒈隐式链接动态链接库应用程序通过说明DLL的导入库文件(lib)链接,lib文件中包含一系列指向动态链接库的指针。18.2.2DLL的链接方式应用程序必须获得的有关DLL的信息:包含导出函数以及类声明的头文件,需要知道函数名和函数接口信息。DLL的导入库文件(应用程序编译链接时使用),使用Project
6、AddToProject/Setting选择lib文件。实际的DLL文件(应用程序运行时调用)。18.2.2DLL的链接方式⒉显式链接动态链接库应用程序在运行时通过函数调用显式装载和卸载DLL,并通过
7、函数指针调用DLL的导出函数函数使用的基本方式:DLL的装载函数:LoadLibrary或AfxloadLibrary获取导出函数指针函数:GetProcAddressDLL的卸载函数:FreeLibrary或AfxFreeLibrary18.2.3动态连接库库函数的导出⒈在源程序中使用关键字_declspec(dllexport)根据一个指定的存储类属性,存储某个项目数据。从动态连接库文件中输出数据、函数、类、类成员函数,而不需要DEF文件。语法如下:_declspec(extended-attrib
8、ute)declarator;在应用程序中使用关键字_declspec(dllimport)引入DLL中的数据、函数以及类⒉在DEF中通过EXPORTS来声明函数DEF是由一个或多个描述DLL属性的语句组成的文本文件,一般包括五个语句的描述项(P88)。库函数的声明如下:entryname[=internalname][@ordinal[NONAME]]⒊其它方法在LINK命令中用/EXPORT参数指定导出函数。在MFC扩展DLL中使用宏导出成员函数或整个类。18.2.3动态连接库库函数的导出⒈使用DE
9、F文件,设置关键字CONSTANT导出。⒉在应用程序中使用如下关键字引入对DLL导出变量的使用:_declspec(dllimport)。18.2.4从DLL中导出数据变量18.3用VC++开发环境生成DLL⒈空DLL工程:不包括任何自动生成的文件。⒉简单的DLL工程:自动生成只有一个默认的DllMain函数的主程序。18.3.1用VisualC++生成Win32DLL18.3.1用VisualC++生成Win32DLL⒊导出变量、函数和类
此文档下载收益归作者所有