现在的位置: 首页 > 综合 > 正文

链接库(一)windows系

2014年08月18日 ⁄ 综合 ⁄ 共 1931字 ⁄ 字号 评论关闭

动态链接库Dynamic Link Library或者Dynamic-link library,缩写为DLL),又称为动态链接库,是微软公司微软视窗操作系统中实现共享函数库概念的一种实作方式。这些库函数的扩展名.DLL.OCX(包含ActiveX控制的库)或者.DRV(旧式的系统驱动程序)。

 

优点:

DLL的最初目的是节约应用程序所需的磁盘和内存空间。便于更新,替换。

 

缺点:

DLL地狱  动态链接库(DLL)的版本与兼容性的问题而造成程序的无法正常运行。

 

DLL代码段通常被使用这个DLL的进程所共享;也就是说它们在物理内存中占据一个地方,并且不会出现在页面文档中。如果代码段所占据的物理内存被收回,它的内容就会被放弃,后面如果需要的话就直接从DLL文档重新加载。

与代码段不同,DLL的数据段通常是私有的;也就是说,每个使用DLL的进程都有自己的DLL数据副本。

。作为选择,数据段可以设置为共享,允许通过这个共享内存区域进行进程间通信。但是不安全。

 

运行时显式链接

 

对每个DLL来说,Windows存储了一个全局计数器,每多一个进程使用便多额外一个。LoadLibrary与FreeLibrary指令影响每一个进程内含的计数器;动态链接则不影响。因此借由调用FreeLibrary多次,从内存反加载一DLL是很重要的。一个进程可以从它自己的VAS注销此计数器。

DLL文档能够在运行时使用LoadLibrary(或者LoadLibraryEx)API函数进行显式调用,这个的过程微软简单地称为运行时动态调用。API函数GetProcAddress根据查找输出名称符号、FreeLibrary卸载DLL。这些函数类似于POSIX标准API中的dlopendlsym、和dlclose

 

编程实例

C 或 C++

 

 

使用DLL输入(静态加载,启动时加载)
编译时需要在vc中设置引用该dll,lib
显式调用(动态加载,需要时加载)
对dll找不到的情况,给程序员提供了个好的控制。
 

抱歉!评论已关闭.