已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
动态链接库的加载,本节课程主要知识点动态链接库的加载动态链接库的静态加载动态链接库的动态加载,重点和难点,重点动态链接库的加载方法难点静态调用中建立关联,动态链接库的加载,动态链接库的加载,动态链接库的加载分为即静态加载方式和动态加载方式。静态加载方式是在编译程序代码时即完成对DLL的加载,应用程序结束时卸载DLL。动态加载方式是使用用API函数来加载和卸载DLL的。,动态链接库的静态加载,动态链接库的静态加载,静态加载方式由编译系统完成对DLL的加载。应用程序完成对DLL的卸载。加载方法简单,但不够灵活。,LIB文件用来做什么?,在生成一个DLL文件时,链接程序会自动生成一个与之对应的LIB文件。LIB文件包含了每一个DLL导出函数的符号名和可选的标识号,但是并不含有实际的代码。,编译应用程序,把生成动态连接库时生成的LIB文件和DLL文件加入到应用程序的工程中。通过静态链接方式编译生成应用程序时,应用程序中的调用函数与LIB文件中导出符号相匹配,这些符号或标识号进入到生成的EXE文件中。LIB文件作为DLL的替代文件被编译到应用程序工程中。,DLL中函数的调用(1/2),当应用程序运行过程中需要加载DLL文件时,WindowsCE根据LIB中的信息发现并加载DLL。然后通过符号名或标识号实现对DLL函数的动态调用。,DLL中函数的调用(2/2),所有被应用程序调用的DLL文件都会在应用程序EXE文件加载时被加载到内存中。可执行程序直接通过函数名调用DLL的输出函数,调用方法和程序内部其他的函数是一样的。,DLL如何共享?,DLL静态加载后,系统会建立对该DLL的调用记录。如还有其它程序使用该动态链接库,则WindowsCE对DLL的应用记录减1,直到所有相关程序都结束对该DLL的使用时才释放它。,DLL静态加载实例,利用VS2005生成动态链库wcedll.dll和wcedll.lib文件。利用VS2005创建一个测试工程wcetest,用以测试动态链接库的静态加载。,设置依赖关系,将两个库文件wcedll.dll和wcedll.lib拷贝到当前测试工程wcetest所在的文件夹下。选择wcetest工程,点击右键,在弹出的菜单中,选择Properties,进入Linker下的Input选项,在AdditionalDependencies编辑框中添加wcedll.lib一项内容。,运行测试代码,编译并下载wcetest.exe,保证代码没有错误。在目标平台上找到wcetest.exe应用程序,双击它,让其运行起来。通过VS2005的RemoteProcessViewer就可以看到wcetest.exe已经运行,而且wcedll.dll已经加载。,动态链接库的动态加载,动态链接库的动态加载,动态调用方式是由程序员编程使用API函数来加载和卸载DLL。使用较复杂,但能更有效地使用内存,是编制大型应用程序的重要方式。是一般常见的动态链接库的加载方法。在嵌入式系统中更为常见。,如何实现DLL动态调用?,在应用程序中用LoadLibrary显式的将自己所做的动态连接库调进来。用GetProcAddress()获取想要引入的函数。如同本应用程序自定义的函数一样来调用该引入函数。在应用程序退出之前,用FreeLibrary释放动态连接库。,DLL动态加载实例,利用VS2005创建一个测试工程wcetest1,用以测试动态链接库的动态加载。与静态调用DLL相比,程序中增加以下代码添加wcedll动态链接库工程实现函数定义。利用LoadLibraryAPI函数动态加载动态链接库,利用GetProcAddressAPI函数获取需要引用的函数。,测试程序的源代码,#includetypedefvoid(*printH)(void);intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRszCmdLine,intiCmdShow)HANDLEhModule=LoadLibrary(TEXT(“wcedll.dll”);if(hModule=NULL)return0;elseprintHPrintHello=(printH)GetProcAddress(hModule,TEXT(PrintHello);PrintHello();FreeLibrary(TEXT(wcedll.dll);return0;,运行测试代码,编译并下载wcetest1.exe,保证代码没有错误。在目标平台上找到wcetest1.exe应用程序,让其运行起来。通过VS2005的RemoteProcessViewer就可以看到wcetest1.exe已经运行而且
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行委托贷款合同模板
- 某戏剧家协会会员积分管理制度
- 电子音乐制作工作室季度考核实施计划
- 包装机械厂会议组织管理管理制度
- 2025年安全员C证考试模拟题库答案
- 业主个人隐私保护与数据安全规范考核试卷 及答案
- 戏剧家协会合同管理实施细则
- 护士资格《内科护理学》模拟题(有答案)
- 人教版 (PEP)三年级下册Unit 1 Welcome back to school!Part A第一课时教案设计
- 语文六年级下册第一单元3 古诗三首迢迢牵牛星教案及反思
- 地磅相关知识培训
- GB/T 2481.1-2025固结磨具用磨料粒度组成的检测和标记第1部分:粗磨粒F4~F220
- 3.1.1气压带风带的形成与移动课件高中地理湘教版选择性必修一
- 【公开课】二氧化碳(第1课时二氧化碳的性质)-2025-2026学年九年级化学科粤版(2024)上册
- 急救药品知识及护理应急预案考试题(附答案)
- 城管志愿活动方案
- 质量环境安全管理制度
- DB62T 3231-2022 地面辐射供暖施工及验收标准
- 冬季道岔除雪教学视频信号设备检修作业课件
- 《直升机停机坪技术标准》(mh5013-2021)
- 标题:思政教育融入小学数学课堂
评论
0/150
提交评论