综合百科行业百科金融百科经济百科资源百科管理百科
管理百科
管理营销
资源百科
人力财务
经济百科
经济贸易
金融百科
金融证券
行业百科
物流咨询
综合百科
人物品牌

动态链接

  	      	      	    	    	      	    

动态链接(Dynamic Linking)

目录

什么是动态链接[1]

  动态链接是指编译系统在链接阶段并不把目标文件和函数库文件链接在一起,而是等到程序在运行过程中需要使用时才链接函数库。

动态链接的优缺点[2]

  一、动态链接的优点是:

  1、共享:多个进程可以共用一个DLL,比较节省内存,从而可以减少文件的交换

  2、部分装入:一个进程可以将多种操作分散在不同的DLL中实现,而只将当前操作的DLL装入内存。

  3、便于局部代码修改:即便于代码升级和代码重用;只要函数的接口参数(输入和输出)不变,则修改函数及其DLL时,无需对可执行文件重新编译或链接。

  4、便于适应运行环境:调用不同的DLL,就可以适应多种使用环境并提供不同的功能。例如:不同的显示卡只需厂商为其提供特定的DLL,而操作系统和应用程序则不必修改。

  二、动态链接的缺点是:

  1、增加了程序执行时的链接开销。

  2、程序由多个文件组成,因此增加了管理复杂度。

动态链接与静态链接[3]

  源程序在经过编译生成目标代码后需要进行链接才能生成可执行文件。链接分为两种,一种是静态链接,另一种是动态链接。动态链接发生在程序运行时,动态链接的函数代码不出现在程序的EXE文件中;而静态链接发生在编译时,静态链接的函数代码实际被插入到程序的EXE文件中。用于静态链接的函数通常保存在OBJ和IJB文件中。例如,编写一个由一些独立的编译单元(文件)组成的大型程序时,链接器在创建EXE文件时将每个模块MOBJ文件结合起来,此时EXE文件将包含OBJ文件中的所有代码。

  使用动态链接时,用于动态链接的函数代码保存在与程序的其他部分相独立的DEF文件中。读者将会看到,用户的程序要包含链接DLL函数加载指令的少量代码,但并不将函数本身包括进来。

参考文献

  1. 吴士力,刘奇,朱兰编著.第4章 Linux应用程序开发 入式LINUX应用开发全程解析与实战.机械工业出版社,2010.01.
  2. 方敏主编;方敏,王亚平,权义宁,王长山编著.第5章 存储管理 新世纪计算机类本科系列教材 计算机操作系统.西安电子科技大学出版社,2004年08月第1版.
  3. 李剑编著.VisualC++.NET实用教程.人民邮电出版社,2002年01月第1版.