MFC+DLLs的开发与使用.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC DLLs的开发和使用 吴玉军曩文渡 (无■轻工大学信息与控翻工群院无■2l●∞回 ■蔓·车立帆动鑫睦麓库的基车鼍毒、Yin32仉L和-inl6 DLL的差鼻.,I出了lFc中三种动杏t撞摩糖‘吐蠢鲁白琦t的t 鼻和适用的场台.蘸詹一建丁阻L的两种调用方法.量髓出了一十-Fc阻L B暖■c应用衽序宴现—甩—错子. DLL. 蓑t词l动寿甓接率(gLL},-K 1.动态链接庠的基本概念. 程序代码的共事和较高的执行效率,一直悬蝙程人员所追求的目标.代码麸事的形式报 多,鼍靠的形式是以库的形式出现.所谓库,就是由一个或多个目标代码模块经过组织而形 成的一个共享代码群.通过一个称为链接的步纛,窿用程序和库代码阃建立。链”,j砒链 接实现对库中函数和资源的调用。 应用程序和库链接的方法有两种:一种是静态链接.所谓静态链接,就是应用程序在需 要调用库代码时,在自己的可执行文件中产生一个库的挎皿.所li上一且t立链攮.蠢和愿库 代码无关.应用程序可以单独发行、运行。由于应用程序在运行过程中。无叠链接的开悄。 所以运行效奉较高,却是以牺牲存储空问为代价的. 另一种就是动态链按.与静态链接库相比,动态链接更是活域实瑰了代码共事.系统中 始终只保存库的一个拷贝,通过和各个应甩程序之间t立的。键’.雨t多个应用程序共 事.提高了代码的共事性.同时.应用程序和库之间的t接最一种较松t的关曩.便于t立 和拆除链接,体现了程序的模块化结构. 2.W妞16与Wtn弛m正韵麓再. 在内存地址分配上的差异t在Winl6中,内存地址是按堆的形式全局分配鹩,每个进程拥有 多个不同类型的堆.每一个DLL揶有自己的散据段.试数据段巾包含了脚工所膏的全一静 态和全局变量,以及DLL的私有局部堆.当DLL为它们分配地址空闻时..最从DLL的敦 据段中分配.由于任何应用进程调用Ⅸ上时。DLL中的函数总可以访问自己的一部堆.直 用程序可以报方便地实现多个进程闯的数据共事. Wir口2以进程单位分配内存地址.每个进程最大具有4∞的虐拟地址空阃.每个进程 具有运行所需的所有代码和数据的映射。进程之问联篆铰少.熏统安全性好.在w-口2环境 中,应用进程必须首先将DLL映射到进程地址空问中。然后才●E实现对DU.的调用.DU。 没有了自已盼局aⅨ堆.同时DLL的全局变量和静态变量在各个应用避程的多个映射之闯不 能共事.所以数据共享涉及到越过进程边界.必须由专门的穗序实现。 W∞2与Winl6 · m山的差异还表现为I ● 没有w谳6 DLL中独立的起动模块.与DLL相联的C船H近行—程謦一接处曩Ⅸ工 的起动鞭序. ●通过调用适当的构造函敷,运行库曩程枣对所有非奉地c++尊杏对曩进行毒,始化. ● 用户定义的单一函敷DILMam来处理其它的初始化和终止. ●使用叫a印a吐、棚j脚啤t■性,在露程序中直接■入、■出符号. 一419— 3.、℃}卜s.o提供的三种MFCDLL的各自特点. 程序运行效率这两个指标上,它们具有各自的特点: DLL ●蕾峋譬矗密MFC肟Regular 静态链接MFC的&,则面DLL在DLL内部可以使用MFc类.DLL的输出函数可以被 MFC和非MFC应甩程序调用。它具有以下特点: 1)DLL与静态链接的应用程序共享同一个版本的MFC静态链接类库,不需要独立与 DLL相链的MFC类库, 在静态链接MFC的DLL中,至少具有以下实现: 1).利用ⅫFc向导提供的DIIMaLn函数,加入DLL所需的初始化和终止代码. 2).尽管USRDLL。已经不用,再蝙译命令行还必须定义“USRDLL”宏。这个宏确保所 需的MFC类库文件注入到DLL工程中. 静态链接MFC的R螂kDLL不具鲁的实现l , 2)应用和DLL之闻不能传递ⅫFc对象指

文档评论(0)

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

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

1亿VIP精品文档

相关文档