实验二动态链接库的使用.docVIP

  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文档。上传文档
查看更多
实验二动态链接库的使用

实验二 动态链接库的建立与调用 实验目的 理解动态链接库的实现原理; 掌握WINDOWS系统动态链接库的建立方法; 掌握WINDOWS环境下动态链接库的调用方法; 实验准备知识 动态链接库基础知识; 动态链接库入口函数(DLLMain); 动态链接库导入/导出函数; 声明导出函数的代码:_declspec(dllexport) MyDllFun(int x,int y); 声明导入函数的代码:_declspec(dllimport) MyDllAdd(int x,int y); 隐式链接和显式链接; 实验内容 在WINDOWS环境下建立一个动态链接库; 使用隐式调用调用动态链接库; 使用显式调用调用动态链接库; 实验要求 掌握动态链接库建立和调用方法; 在XP+VC6.0环境下建立一个动态链接库,并分别使用隐式和显式调用; 实验内容 1、动态链接库简介 1.1 DLL概述 动态链接库(Dynamic Link Libray,简称DLL)是一些编译过的可执行的程序模块,可以在应用程序中或其他DLL中被调用。DLL的应用非常广泛,可以实现多个应用程序的代码和资源共享,是Windows程序设计中的一个非常重要的组成部分。 DLL设计程序的优点:? *共享代码、资源和数据。DLL作为一种基于Windows的程序模块,不仅可以包含可执行的代码,还可以包括数据和各种资源等,扩大了库文件的使用范围;? *可将系统模块化,方便升级。? *隐藏实现的细节; *DLL与语言无关; 1.2 DLL的调用 不论使用何种语言对编译好的DLL进行调用时,基本上都有两种调用方式,即静态调用方式和动态调用方式。静态调用方式由编译系统完成对DLL的加载和应用程序结束时DLL卸载的编码(如还有其它程序使用该DLL,则Windows对DLL的应用记录减1,直到所有相关程序都结束对该DLL的使用时才释放它),简单实用,但不够灵活,只能满足一般要求。动态调用方式是由编程者用API函数加载和卸载DLL来达到调用DLL的目的,使用上较复杂,但能更加有效地使用内存,是编制大型应用程序时的重要方式。 1.2.1 DLL的静态调用 DLL的静态调用由编译系统完成对DLL的加载和应用程序结束时DLL卸载,在VC中静态调用DLL非常简单,首先将动态链接库的.LIB文件和.DLL文件加入到应用程序的工程中,然后在使用DLL中的函数文件里引用DLL的头文件(.h)即可。 当开发人员通过静态方式编译并生成应用程序时,应用程序中的调用函数与LIB文件中的导出符号相匹配,这些符号或标示进入到生成的EXE文件中。当应用程序运行过程中需要加载DLL文件时,操作系统将根据这些信息查寻并加载DLL,然后通过符号或标示实现对DLL函数的动态链接。当加载应用程序的EXE文件时,所有被应用程序调用的DLL文件都被加载到内存中,这时可执行程序直接通过函数名调用DLL的输出函数,其调用方法与调用程序内部函数相同。 1.2.2 DLL的动态调用 动态调用方式是由编程者用API函数加载和卸载DLL来达到调用DLL的目的,动态调用是指在应用程序中使用LoadLibrary函数或MFC提供的AfxLoadLibrary函数显式调用自己所需要的动态链接库,动态链接库的文件名就是上面两个函数的参数,然后在使用GetProAddress()函数获取所需要引入的函数。完成上述操作后,应用程序可以调用引入的函数。在应用程序退出之前,应该使用FreeLibrary函数或MFC提供的AfxFreeLibrary函数来释放动态链接库。 (静态链接、动态链接等基础概念见PDF文档) 2、动态链接库的实现 2.1 参考PDF文档,练习DLL文件的创建和调用; 简单MFC DLL例子 例1:设计动态链接库,并向库中添加绘制矩形和椭圆的函数。 新建一个MFC AppWizard[dll]工程,给工程命名为mydll,如图: 单击确定进入下一步,如下图,可以对DLL的类型等进行设置,采用默认的设置即可,单击完成按钮,向导自动生成相关的文件和资源。 单击工作区的FileView页面,可以看到向导生成的文件。在头文件夹里有mydll.h文件,在源文件夹里有mydll.cpp文件,可以在mydll.h文件里添加自定义函数的原型,在mydll.cpp文件中定义函数。此外,在源文件夹里还有一个mydll.def文件。 在mydll.h文件中添加函数原型,代码如下:、 void DrawEllipse(CClientDC*pDC,int x1,int y1,int x2,int y2); void DrawRectangle(CClientDC*pDC,int x1,int y1,int x2,int y2); cl

文档评论(0)

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

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

1亿VIP精品文档

相关文档