控制台下的DLL动态连接库的开发.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
控制台下的DLL动态连接库的开发

控制台下的DLL动态连接库的开发 摘要: 通常在开发大型的应用软件系统时,为了提高代码的重用性,降低代码间的耦合度,一般会采用模块化的编程方式,将应用程序分成很多模块,这些模块分别完成相对独立的功能,它们彼此协作构成整个软件系统。在编程过程中可能有一些模块的功能较为通用,在构建其它软件系统时仍然可以使用。于是Windows系统平台提供了一种有效的编程和运行环境,可以将独立的程序模块创建为较小的动态连接库-DLL(Dynamic Link Library/res)文件,并可对它们单独编译和测试。本文简要说明了动态连接库的结构与开发过程,给出了应用程序调用DLL库的几种方式和相应的语言程序,讨论了函数参数传递的两种形式。 关键词:动态连接库 静态连接库 MFC类库 标准接口 扩展接口 第一章动态连接库的概念与创建 1.1.动态连接库的基本概念 动态连接库(Dynamic Link Library,DLL)是Windows编程的重要特点之一,它使得Windows应用程序可以共享DLL资源和代码,即在内存中只保留一份DLL程序库,由多个应用程序调用同一DLL副本,这在Windows这一多任务操作环境中可以大大的提高程序的执行效率,节省宝贵的资源,实际上Windows本身也包括几个重要DLL库,如GDI.EXE,USER.EXE,KERNEL.EXE均为动态连接库。Windows应用程序是一个可执行文件(EXE),它通常创建一个或几个窗口,并使用消息循环接收用户输入。动态连接库是一种包含函数和数据的模块,通常并不能直接执行,它们是一些独立的文件(通常是DLL文件),其中包含能被应用程序或其他DLL调用完成一定功能的函数。只有在其它模块调用DLL中的函数时才起作用。在运行时,只有当EXE程序确实要调用这些DLL模块的情况下,系统才会将它们装载到内存空间中。这种方式不仅减少了EXE文件的大小和对内存空间的需求,而且使这些DLL模块可以同时被多个应用程序使用。 在程序开发中,将各种目标模块(OBJ),运行库(LIB)文件,以及已编译的资源(RES)文件连接在一起,创建可执行文件(EXE),这种连接称为“静态连接”。而“动态连接”发生在运行时刻,是在运行时将已经编译调试好的DLL文件装入,它映射到调用程序进程的虚拟地址空间中。 DLL并不是一个独立的可执行程序,类似于传统编程的库程序,用户可以将他入或自己编制的DLL连接到应用程序中,但传统编程的库连接是静态连接(Static Link Library),将库程序中的代码和数据复制到自己的程序中,这在DOS环境下无疑提高了编程效率、但在Windows多任务环境下有可能同时运行多个应用程序,如果其中有两个以上的应用程序使用了同一静态库中的函数,那么内存中就会同时出现两份相同的数据和代码,这显然浪费了内存资源,降低了效率,开发DLL程序就是为了避免出现这种情况。 相比静态连接库动态连接库的优点: 当多个应用程序同时调用同一个DLL时,所有程序将共享该DLL在物理内存的同一份副本,这样节省了内存空间,减少了数据交换的系统开销; DLL可以独立编译、调试,当对DLL进行更改和升级时,只要DLL中出口函数的名称、参数、调用方式和返回值不发生改变,调用该DLL的应用程序不需要重新编译和调试; 可以跨平台调用,DLL的编制与具体的编程语言及编译器无关,只要在开发DLL时遵循通用的标准,用一种编程语言开发的应用程序可以调用其它编程语言开发的DLL,这增加了DLL的通用性。 DLL通常采用.DLL为扩展名,但也有用。DRV、.FON、.EXE等为扩展名的.例如各种驱动文件KEYBOARD.DRV,SOUND.DRV,视频和打印驱动等都是DLL,各种字体资源文件(.FON)也是DLL,只不过其中存储的既不是代码也不是数据,而是可供其它Windows程序使用的字模,虽然DLL可以有任意扩展名,但只有具有标准动态连接库扩展名.DLL的动态连接库会被Windows自动装入,其它扩展名的DLL必须显示用LoadLibrary函数调入。 1.2.创建动态连接库 1.2.1动态连接库的创建方式 动态连接库的创建方式主要可以分为C语言直接创建、MFC类库创建两大类。直接用C语言写的DLL,其输出的函数一般用的是标准C接口来实现的,并且能够被非MFC和MFC编写的应用程序所调用,其通用性比较强,方便调用和整合。使用MFC类库编写的DLL主要可以分为两种:规则的动态连接库和扩展动态连接库。 规则动态链接库(RegularDLL)明显的特点是在源文件里有一个继承CWinApp的类,DllMain函数被MFC所提供,不需显式的写出来。其又可细分成静态连接到MFC和动态连接到MFC两种。规则动态链接库(RegularDLL)能够被

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档