网站大量收购独家精品文档,联系QQ:2885784924

《Visual C++NET程序设计教程与上机指导》第12章:动态链接库DLL编程.ppt

《Visual C++NET程序设计教程与上机指导》第12章:动态链接库DLL编程.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《VisualCNET程序设计教程与上机指导》第12章:动态链接库DLL编程

第12章 动态链接库DLL编程 12.1 动态链接库DLL概述 12.2 动态链接库的几种链接方法 12.3 普通的DLL程序编程步骤 12.4 MFC扩展DLL编程步骤 12.5 上 机 指 导 * * /webnew/ 教学提示:本章主要介绍了动态链接库DLL的基本概念、动态链接库的两种链接方法、选择动态链接库的原则、普通的DLL程序编写方法及MFC扩展DLL程序编写的方法。 教学目标:通过本章的学习,掌握动态链接库DLL的基本概念,掌握动态链接库的链接方法以及如何选择动态链接库,了解普通的DLL程序编程及MFC扩展DLL程序编程的技术和方法。 DLL是Windows最重要的组成要素之一,Windows中的许多功能、特性都是通过DLL来实现的。动态链接库(.dll)是包含共享函数库的二进制文件,可以被多个应用程序同时使用。 12.1.1 动态链接库DLL的优点 12.1.2 动态链接库的种类及选用原则 12.1.1 动态链接库DLL的优点 为什么要使用DLL呢?这是因为与传统的静态链接库相比,DLL具有更多的优势。 DLL提供了一种共享数据和代码的方便途径,并且,由于多个应用程序可以共享同一个DLL中的函数,因此,使用DLL可以显著地节省磁盘空间。尤其对于Windows应用程序,有很多的操作都是“标准化”了的,如果使用传统的静态链接,每一个需要完成这些操作的应用程序,都必须在自己的执行文件中包括相同的执行代码,这不但使单个应用程序变得更长,也浪费了磁盘空间。 返回 12.1.2 动态链接库的种类及选用原则 1. 不同类别的动态链接库 2. 动态链接库的选用 返回 1. 不同类别的动态链接库 Visual C++ .NET支持多种DLL,包括: ●非MFC DLL。 ●静态链接到MFC的常规DLL。 ●动态链接到MFC的常规DLL。 ●MFC扩展DLL。 返回 2. 动态链接库的选用 如何选择应该使用的DLL的类型呢?一般可以从以下几个方面来考虑: ●相对使用了MFC的DLL而言,非MFC DLL显得更为短小精悍。 ●如果需要创建使用了MFC的DLL,并希望MFC和非MFC应用程序都能使用所创建的DLL,那么可以选择的范围包括静态链接到MFC的常规DLL和动态链接到MFC的常规DLL。 ●如果希望在DLL中实现从MFC派生的可重用的类,或者是希望在应用程序和DLL之间传递MFC的派生对象时,必须选择MFC扩展DLL。 返回 不论使用何种语言对编译好的DLL进行调用时,基本上都有两种链接方法,即静态调用方式和动态调用方式。静态调用方式由编译系统完成对DLL的加载和应用程序结束时DLL卸载的编码,简单实用,但不够灵活,只能满足一般要求。 调用应用程序到DLL也有两种方法: ●隐含链接 ●显式链接 12.2.1 隐含链接 12.2.2 显示链接 在使用隐含链接除了需要相应的DLL文件外,还必须具备如下的条件: 一个包括DLL文件导出的函数或C++类的头文件。 一个输入库文件(.LIB文件)。 通常情况下,需要从DLL的提供者那里得到上面的文件,输入库文件是在DLL文件被链接时由链接程序生成的。 12.2.1 隐含链接 返回 如果没有与DLL相关联的LIB文件,则必须使用显式链接。使用显式链接同样必须知道函数返回值的类型和所传递的参数个数、类型和顺序。与使用隐含链接不同的是,使用显式链接的应用程序在调用DLL中的导出函数前,必须使用LoadLibrary()函数加载DLL,并得到一个模块句柄。然后使用该句柄调用GetProcAddress()函数获得所需要调用的导出函数的指针,并通过该指针调用DLL中的导出函数,这种模式使用显式链接到DLL的应用程序不再需要相应的LIB文件。在使用完毕之后,还需要调用 FreeLibrary()函数释放加载的DLL。 12.2.2 显示链接 返回 在用C++定制DLL文件时,需要编写的就是包含导出函数表的模块定义文件(.DEF)和实现导出函数功能的C++文件。 块定义文件(.DEF)是由一个或者多个用于描述DLL属性的模块语句组成的文本文件,每个.DEF文件至少必须包含以下模块定义语句: 第一个语句必须是LIBRARY语句,指出DLL的名字。 EXPORTS语句列出被导出函数的名字。 “:”对一行进行注释(可选)。 实现文件 在实现DLL的CPP文件中,包含DLL入口点处理的API函数和导出函数的代码。 入

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档