《Visual C++NET程序设计教程与上机指导》第12章:动

《Visual C++NET程序设计教程与上机指导》第12章:动

ID:43159033

大小:364.00 KB

页数:12页

时间:2019-10-01

《Visual C++NET程序设计教程与上机指导》第12章:动_第1页
《Visual C++NET程序设计教程与上机指导》第12章:动_第2页
《Visual C++NET程序设计教程与上机指导》第12章:动_第3页
《Visual C++NET程序设计教程与上机指导》第12章:动_第4页
《Visual C++NET程序设计教程与上机指导》第12章:动_第5页
资源描述:

《《Visual C++NET程序设计教程与上机指导》第12章:动》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第12章动态链接库DLL编程教学提示:本章主要介绍了动态链接库DLL的基本概念、动态链接库的两种链接方法、选择动态链接库的原则、普通的DLL程序编写方法及MFC扩展DLL程序编写的方法。教学目标:通过本章的学习,掌握动态链接库DLL的基本概念,掌握动态链接库的链接方法以及如何选择动态链接库,了解普通的DLL程序编程及MFC扩展DLL程序编程的技术和方法。12.1动态链接库DLL概述DLL是Windows最重要的组成要素之一,Windows中的许多功能、特性都是通过DLL来实现的。动态链接库(.dll)是包含共享函数库的二进制文件,可以被多个应用程序同时使用。12.1.1动态链接库DLL

2、的优点12.1.2动态链接库的种类及选用原则12.1.1动态链接库DLL的优点为什么要使用DLL呢?这是因为与传统的静态链接库相比,DLL具有更多的优势。DLL提供了一种共享数据和代码的方便途径,并且,由于多个应用程序可以共享同一个DLL中的函数,因此,使用DLL可以显著地节省磁盘空间。尤其对于Windows应用程序,有很多的操作都是“标准化”了的,如果使用传统的静态链接,每一个需要完成这些操作的应用程序,都必须在自己的执行文件中包括相同的执行代码,这不但使单个应用程序变得更长,也浪费了磁盘空间。返回12.1.2动态链接库的种类及选用原则1.不同类别的动态链接库2.动态链接库的选用返回

3、1.不同类别的动态链接库VisualC++.NET支持多种DLL,包括:●非MFCDLL。●静态链接到MFC的常规DLL。●动态链接到MFC的常规DLL。●MFC扩展DLL。返回2.动态链接库的选用如何选择应该使用的DLL的类型呢?一般可以从以下几个方面来考虑:●相对使用了MFC的DLL而言,非MFCDLL显得更为短小精悍。●如果需要创建使用了MFC的DLL,并希望MFC和非MFC应用程序都能使用所创建的DLL,那么可以选择的范围包括静态链接到MFC的常规DLL和动态链接到MFC的常规DLL。●如果希望在DLL中实现从MFC派生的可重用的类,或者是希望在应用程序和DLL之间传递MFC的

4、派生对象时,必须选择MFC扩展DLL。返回12.2动态链接库的几种链接方法不论使用何种语言对编译好的DLL进行调用时,基本上都有两种链接方法,即静态调用方式和动态调用方式。静态调用方式由编译系统完成对DLL的加载和应用程序结束时DLL卸载的编码,简单实用,但不够灵活,只能满足一般要求。调用应用程序到DLL也有两种方法:●隐含链接●显式链接12.2.1隐含链接12.2.2显示链接在使用隐含链接除了需要相应的DLL文件外,还必须具备如下的条件:一个包括DLL文件导出的函数或C++类的头文件。一个输入库文件(.LIB文件)。通常情况下,需要从DLL的提供者那里得到上面的文件,输入库文件是在D

5、LL文件被链接时由链接程序生成的。12.2.1隐含链接返回如果没有与DLL相关联的LIB文件,则必须使用显式链接。使用显式链接同样必须知道函数返回值的类型和所传递的参数个数、类型和顺序。与使用隐含链接不同的是,使用显式链接的应用程序在调用DLL中的导出函数前,必须使用LoadLibrary()函数加载DLL,并得到一个模块句柄。然后使用该句柄调用GetProcAddress()函数获得所需要调用的导出函数的指针,并通过该指针调用DLL中的导出函数,这种模式使用显式链接到DLL的应用程序不再需要相应的LIB文件。在使用完毕之后,还需要调用FreeLibrary()函数释放加载的DLL。1

6、2.2.2显示链接返回12.3普通的DLL程序编程步骤在用C++定制DLL文件时,需要编写的就是包含导出函数表的模块定义文件(.DEF)和实现导出函数功能的C++文件。块定义文件(.DEF)是由一个或者多个用于描述DLL属性的模块语句组成的文本文件,每个.DEF文件至少必须包含以下模块定义语句:第一个语句必须是LIBRARY语句,指出DLL的名字。EXPORTS语句列出被导出函数的名字。“:”对一行进行注释(可选)。实现文件在实现DLL的CPP文件中,包含DLL入口点处理的API函数和导出函数的代码。入口函数LibMain()就像C程序中的Main()一样,Windows每次加载DLL

7、时都要执行LibMain()函数,主要用来进行一些初始化工作。12.4MFC扩展DLL编程步骤下面,通过一个实例演示MFC扩展DLL的创建和使用。1.实现MFC扩展DLL12.5上机指导在本小节中,主要练习如何创建MFC扩展DLL应用框架,具体的例子为一个含有两个文本编辑框的对话框。

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

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

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