动态链接库
0赞
动态链接库与静态链接库的区别:
动态链接发生在程序运行时,动态链接库的函数代码不出现在程序的.exe文件中;而静态链接发生在编译时,静态链接库的函数代码被实际地插入到程序的.exe文件中。将被静态链接的函数通常保存在.obj和.lib文件中。例如,编写一个有一些独立的编译单元(文件)组成的大型程序时,链接器将在它创建.exe文件时,把每个模块的.obj文件结合起来。此时,.exe文件将包含.obj文件中的所有代码。
使用动态链接库是,将被动态链接的函数代码保存在与程序的其余部分独立的.dll文件中。用户的程序将要包含链接dll函数加载指令的少量代码,但并不将函数本身包括进来。
创建动态链接库的原因:
使用动态链接库对于小程序时没有好处的。它只是简化了在编译时程序所使用函数的链接操作。不过,对于共享定制函数库德,涉及许多组件的大型软件系统,使用动态链接库的优点将是很明显的。这是因为:
(1)在dll中放置函数减小了每个组件的尺寸。因为在硬盘上保存时,不会在每个用到这组函数的程序中都复制函数。如果很多进程都要调用这些dll库函数,那么节约下来的硬盘空间是极为可观的。
(2)使用dll使升级更为简单。改变保存在静态链接库中的函数时,必须重新链接使用该函数的每个程序。使用动态链接库时,仅需重新编译dll文件。所有使用此dll的应用程序都将在被再次执行时使用新版本的函数。
(3)使用dll使得“在域中”修正代码更加容易。例如,如果有一个重要程序发生错误,下载一个修正后的动态链接库要比下载全部的应用程序简单。这对于那些在远程环境中使用的程序尤其重要,如宇宙飞船,无人监视图形站等。
当然,任何事情都是要付出代价的。使用自己的dll的缺点是现在的程序已变成了两个(或更多个)部分。这使程序更难于管理,而且更容易出现某些错误。例如,如果动态链接库与应用程序不同步,则必然会产生麻烦。但总的来说,创建大型软件系统时,动态链接的优点远大于它的缺点。
