首页 > 其他 > 详细

Implicit Linking与Explicit Linking

时间:2015-07-19 23:22:56      阅读:290      评论:0      收藏:0      [点我收藏+]

一、Implicit Linking(隐式连接)

 

            Implicit Linking(隐式连接) ,又叫静态载入,所谓静态载入是指程序在连接时期即与dlls所对应的import libraries作静态连接,于是可执行文件中便对所有的dll函数都有一份重定位表格(relocation table)和待修正记录(fixup record)。当程序被windows载入器载入内存中时,载入器会自动修正所有的fixup records,而这个fixup records 就是记录DLL中所有输出资源的正确位置地址,经过这样的程序动态连接便自动产生。也就是说,程序开始执行时,会用静态载入的方式时所使用的DLLs都载入到程序的内存里。

      静态载入方式的优点

      1、静态载入方式所使用的dll会在应用程序执行时载入,然后就可以调用所有dll中提供的函数,就像是程序中一样。

      2、处理简单,载入的方法有编译器负责处理,不需动脑筋。

 

      静态载入方式的缺点

      1、当程序机构态载入方式所使用的dll不存在时,程序开始就会报dll无法找到的错误而使得程序无法运行。

编译时需要加入import library。

      2、若调用的dll很多,载入应用程序的速度就会很慢。

不同的c++编译器静态载入的方式也不一样。

 

二、Explicit Linking(显式连接)

          所谓Explicit Link(显式连接)又叫动态载入,使用dll的可执行文件必须明确调用载入和御载dll的函数调用(Function Call),并且存取dll的输出函数。用户端必须通过函数声明调用函数。

          可执行文件可以使用任何一种连接方式的相同低dll。并且,这些机制之间并不会相互排斥,因此,当一个可执行文件隐式的连接dll时,其他程序还可以显示地连接它。

Implicit Linking与Explicit Linking

原文:http://www.cnblogs.com/alleyonline/p/4659898.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!