- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 出院结算单费用模板.doc VIP
- 2014款北京现代瑞纳_汽车使用手册用户操作图解驾驶车主车辆说明书电子版.pdf
- ccdcmos原理介绍讲义.pptx VIP
- 驾照科目一考试题库(完整版).doc VIP
- 图像传感器ccdcmos.ppt VIP
- 美剧剧本绝望主妇台词本中英文对照精排版第一季第一集.pdf VIP
- CCDCMOS原理介绍讲义..ppt VIP
- 【生物】免疫与免疫规划第2课时课件-2025-2026学年人教版八年级生物上册.pptx VIP
- 驾照科目一考试题库(完整版).doc VIP
- 综合实践 记录我的一天 分享我的一天(说课稿)-2024-2025学年一年级上册数学北师大版(2024).docx VIP
文档评论(0)