lib和dll详解

.lib文件

    这类文件分两种,一种是静态编译得到的静态编译链接库,该.lib文件中包括了方法的实现(定义),而相应产生的.h文件包含了方法(函数)的名称和位置等,包含此类.lib文件时必须包含对应的.h文件才能起作用,否则出错;另一种是动态导出.dll时附带产生的动态库,其作用类似于.h文件,只是记录了.dll文件中方法的声明等,包含.dll时必须包含对应的.lib文件以及lib对应的.h。

    1.静态编译库在编译时会将相关内容映射(注入)到可执行文件中,编译链接运行得到的exe可脱离静态库使用 ;

    2.动态编译库在编译时同样会将内容注入可执行文件中,但注入的仅仅是函数地址,所以最终得到的exe需要相应的.dll文件;

    3.导入方法:1>预编译指令#pragma comment (文件名,"*.lib") ;

                     2>通过工程属性中的link直接加入lib ;

   4.缺点:应用程序比较大,失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行;

    5.优点:方便,不需在加动态库。

 

.dll文件

     动态链接库,程序运行时才寻址调用,依赖.dll文件运行 。

    1.导入方法: 1>导入相应.lib文件;

                       2>包含.h文件;

                       3>包含.dll(预编译指令或显式调用LoadLibaray

    2.优点:节省内存,可共享

    3.缺点:容易造成DLL HELL(动态库”灾难“),出现在.dll更新时等

你可能感兴趣的:(dll,lib,动态库,静态库)