LIB文件与DLL文件

      Lib是编译时静态链接库,dll是运行时动态链接库。可通过不同的角度来看待这个问题:
(1)一般的动态库程序生成有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。
(2)在使用动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL则包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的地址,这样当一个或多个应用程序运行时再把程序代码和被调用的DLL函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,这种应用情况下,DLL和.LIB文件必须随应用程序一起发行,缺.LIB文件导致编译错误,缺DLL文件导致运行错误。
(3)DLL的LIB(导入库),不含可执行的具体代码(代码在DLL中)。而最早的LIB(静态链接库),里面含有代码。所以,可以看出来,如果一个函数被调用多次,使用DLL(动态链接技术),可以节省一些硬盘和内存空间!而用LIB(静态链接技术),每次调用,都会链接入相同的代码,造成一些空间上的浪费。不过它的好处是不需要进行一个“查找”工作(也就是DLL应用时要找到LIB文件中说的DLL的“函数入口点”,可以获得更高的效率)。

你可能感兴趣的:(工作,dll)