首页 > 其他 > 详细

DLL和LIB

时间:2015-10-10 01:39:52      阅读:248      评论:0      收藏:0      [点我收藏+]

DLL:动态链接库 = 运行时链接

  程序在内存中运行时遇到DLL对应的.h,则在内存中找有无该dll,找不到,则在Path/程序生成目录/vs指定的库目录下找改dll。找到后,程序与其链接。

  所以N个进程可以共用一个dll

LIB:静态链接库 = 链接时链接

  在程序链接阶段将lib里面的内容(一种lib是源码,一种lib是dll的地址)与目标模块链接,加入目标模块中,链接之后lib无用。

  也就是独立的.lib不会进入内存。

  只有N个程序可以共用一个lib(要在模块编译链接阶段就将lib的源码)

链接时,只链接静态链接库。

链接程序怎么确定程序是静态链接还是动态链接:

  有LIB = 用静态链接

  有dll = 运行时候再链接

例子:

  #include a.h

  aaa.b()//a里的类aaa的成员函数b

程序经历的过程:

  编译:

    词法分析:看aaa.b()在调用前有无声明或定义(a.h)

  链接:

    链接所有lib进程序

  装入运行:

    aaa.b():

      -搜索aaa.b()在的位置:搜索 进程源码 -> 搜索动态链接库dll(path -> 程序exe目录 -> 库包含目录下的dll)

      -调用aaa.b(),进入b()函数体

 

 

注意:函数调用是在运行时才进入调用的代码

函数调用分两种:

  1.调用的是DLL里的函数:

    在内存中找有无dll有该函数,找不到,则在Path/程序生成目录/vs指定的库目录下找改dll。找到后,程序与其链接。

  2.调用的是LIB里的函数:

    LIB在链接的时候一定要链接到,要不然(运行时?)就会报错。

 

DLL和LIB

原文:http://www.cnblogs.com/yiii/p/4865618.html

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