没有合适的资源?快使用搜索试试~ 我知道了~
首页动态链接库 DLL的开发与调用
动态链接库 DLL的开发与调用

DLL的开发与调用DLL的开发与调用.pdfDLL的开发与调用.pdfDLL的开发与调用.pdf
资源详情
资源评论
资源推荐

第
10
章
DLL
的开发与调用
•Windows
系统平台提供了一种有效的编程和运行环境,可以把独立的
程序模块创建为较小的
DLL
(
Dynamic Linkable Library
,动态链接库)
文件,并可对它们单独编译和测试。
Windows
操作系统的核心功能、
系统服务、应用程序服务等多数是由一组动态链接库实现的。
•
使用动态链接库有很多优点。在运行时,只有当
EXE
程序确实要调用
这些
DLL
模块的情况下,系统才会将它们装载到内存空间中。这种方
式不仅减少了
EXE
文件的大小和对内存空间的需求,而且使这些
DLL
模块可以同时被多个应用程序使用。而且当动态链接库中的函数改变
后,只要不是参数改变,调用这个函数的应用程序并不需要重新编
译,这在编程时是十分有用的。
•
通过本章的学习,读者会了解
DLL
的基本概念、能够使用
VC
实现几种
类型的
DLL
的开发与调用操作。

10.1 DLL
的基础知识
•
在程序开发中,比较大的应用程序,往往被划分为很多模块,这些模
块以二进制的方式提供,并能完成相对独立的功能。其中一些比较通
用的模块,在构造其他软件系统时,也经常用到,就把这些模块汇集
起来,形成
“
仓库
”
。而动态链接库(
DLL
)就可以看成一种
“
仓库
”
,提
供可以直接使用的变量、函数或类。
•
在开发和调用
DLL
之前,有必要了解一下动态链接库的相关概念。只
有了解了动态链接库的结构和工作机制,才能灵活有效地开发和使用
它。

10.1.1 DLL
与
LIB
•
与动态链接库(
DLL
)相对应的是静态链接库(
LIB
文件)。其相似
之处是它们都是将一部分可执行代码以及数据放在库中供用户程序使
用,而且在使用时,这些代码就象是用户程序本身的一部分。而二者
的主要区别就是在使用方法上。
•
使用静态链接库的应用程序从函数库(
LIB
)得到所引用的函数的执
行代码,然后把执行代码放进自身的执行文件中,这样,应用程序在
运行时就可以不再需要静态函数库的支持。
•
使用动态链接库的应用程序只包括了用于从
DLL
中定位所引用的函数
的信息,而没有函数具体实现,要等到程序运行时才从
DLL
中获得函
数的实现代码。因此,使用了
DLL
的应用程序在运行时必须要有相应
的
DLL
的支持。

10.1.1 DLL
与
LIB
•
如果与应用程序连接的是静态链接库,每一个应用程序在编译过程中
都必须拷贝一份库的代码,这样就造成了资源的浪费,增大程序本身
的代码开销。而动态链接库在编译过程中并不连接应用程序,而当应
用程序运行时连接,可以与其他应用程序共享库中的函数和资源,减
少了因重复拷贝而造成的应用程序的冗长和计算机资源的占用。
•
当对目标代码链接形成可执行文件时,静态链接形成的程序是完整
的,即从一台机器复制到另一台机器就可以直接运行。相比而言,其
程序的文件比较大。而动态链接生成的可执行程序在不同机器间迁移
时,必须要带着相应的库,否则就不能运行。相对而言,动态链接的
可执行文件本身比闲
•
另外,静态链接库和动态链接库还有一个区别,那就是静态链接库中
不能再包含其他的动态或静态链接库,而动态链接库中还可以再包含
其他的动态或静态链接库。

10.1.2 DLL
与
EXE
•DLL
和
EXE
都是
Windows
下的可执行模块,在对应的文件结构上,它
们也类似的:具有文件头,重定位信息表,导入动态库表等,另外,
DLL
作为供程序调用的服务者,主要用来提供输出变量和函数供别的
程序调用。
DLL
文件中包含函数(或类)的执行代码还包含导出的函
数表和变量表,表中包含了函数的名字和函数的地址。
DLL
的结构可
简单表示如下图所示。
剩余33页未读,继续阅读


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论4