- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
项目12:动态链接库-在PDA研发中使用DLL文件(1) 本节课程主要知识点 动态链接库 动态链接库的特点 动态链接库的实现 重点和难点 重点 动态链接库 难点 动态链接库的编制 动态链接库 EXE文件 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。 可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。 在构造软件系统时,常常将所有模块的源代码都静态编译到整个应用程序EXE文件中。 EXE文件的软肋 源代码都静态编译到整个应用程序EXE文件中,会产生一些问题。 一是增加了应用程序的大小,占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费。 另一个缺点是,在编写大的EXE程序时,在每次修改重建时都必须调整编译所有源代码,增加了编译过程的复杂性,也不利于阶段性的单元测试。 Windows CE中如何解决问题? Windows CE中内存资源更少,甚至都没有硬盘,资源问题更为突出。 Windows系统平台上提供了一种有效的编程和运行环境,你可以将独立的程序模块创建为较小的文件,并可对它们单独编译和测试。 这些较小的模块就是动态链接库DLL。 Windows CE中的DLL 在运行时,只有当EXE程序确实要调用这些DLL模块的情况下,系统才会将它们装载到内存空间中。 Windows自己就将一些主要的系统功能以DLL模块的形式实现。 动态链接库(Dynamic Link Library) 动态链接库缩写为DLL。 DLL是一些编译过的可执行程序模块、数据或其他资源,可以被应用程序或其他DLL调用。 DLL的应用非常广泛,可以实现多个应用程序的代码和资源共享。 动态链接库的组成 DLL是一种磁盘文件,以dll、DRV、FON、SYS和许多以EXE为扩展名的系统文件都可以是DLL。 它由全局数据、服务函数和资源组成,在运行时被系统加载到进程的虚拟空间中,成为调用进程的一部分。 如果与其它DLL之间没有冲突,该文件通常映射到进程虚拟空间的同一地址上。 动态链接库的几点注意 DLL中包含各种导出函数,用于向外界提供服务。 DLL有自己的数据段,但没有自己的堆栈,使用与调用它的程序相同的堆栈。 一个DLL在内存中只有一个实例。 DLL的编制与具体的编程语言及编译器无关。 动态链接库的特点 共享资源 共享代码、资源和数据。DLL不仅可以包含可执行的代码,还可以包括数据和各种资源等,扩大了库文件的使用范围。 方便应用程序的扩展 由于DLL能被应用程序动态载入内存。所以,应用程序可以在需要时才将DLL载入到内存中,这让程序的可维护性变得很高。 比如微软的操作系统经常需要升级,微软的程序员不必将操作系统代码都重写一遍,只需将需要升级的相关DLL文件重写即可。 DLL与语言无关 一个小组成员共同完成一个软件项目。每个人所使用的编程工具并不同,每人负责的部分所使用的编程语言都不同,如何合作完成项目呢? 使用DLL就可以解决这个问题,程序员提供自己完成代码的DLL即可,主程序调用这些DLL即可。 节省内存 如果多个应用程序调用的是同一个动态链接库,那么这个DLL文件不会被重复加载到内存中,而是由这些应用程序共享同一个已载入内存的DLL。 在一个办公室中,一般大家会共用一个网络打印机,不会为每一个员工配置一台打印的。 在嵌入式系统中更有意义。 隐藏程序的细节 在某些情况下,用户可能想隐藏程序的源代码,就可以采用DLL来实现,DLL的例程可以被应用程序访问,而不显示其中代码的细节。 可以有效地保护自己的知识产权。 节省内存 如果多个应用程序调用的是同一个动态链接库,那么这个DLL文件不会被重复加载到内存中,而是由这些应用程序共享同一个已载入内存的DLL。 在一个办公室中,一般大家会共用一个网络打印机,不会为每一个员工配置一台打印的。 在嵌入式系统中更有意义。 动态链接库的实现 DLL入口函数 每一个DLL必须有一个入口点,DLLMain是一个缺省的入口函数。 DLLMain负责初始化(Initialization)和结束(Termination)工作,每当一个新的进程或者该进程的新的线程访问DLL时,或者访问DLL的每一个进程或者线程不再使用DLL或者结束时,都会调用DLLMain。 DLLMain的函数原型 int WINAPI DLLMain(HINSTANCE hinstance,DWORD fdwReason,PVOID pvReserved ) { switch(fdwReason) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: ca
您可能关注的文档
最近下载
- 中考英语专题任务型阅读理解课件.pptx VIP
- 鼻咽癌的科普知识课件.pptx VIP
- 纱岭金矿12000td建设工程环境影响报告书.PDF
- 国家开放大学,企业策划,形考四.pdf VIP
- Unit5IntothewildUnderstandingideasTheMonarch’sJourney课件-高中英语.pptx VIP
- 督导考核标准.doc VIP
- 在线网课学习课堂《学术英语》单元测试考核答案.docx VIP
- 伺服电机选型参数计算.xlsx VIP
- (附答案)电大国开思政课《中国近现代史纲要》形考在线(专题检测四)试题.docx VIP
- XX市行政事业单位内部控制调查问卷【模板】.docx VIP
有哪些信誉好的足球投注网站
文档评论(0)