lib和dll

在我们的c++程序中,引用别人的库的时候有两种方式:静态库和动态库

动态库:动态库有两个文件,一个lib文件和一个dll文件。lib文件中包含了方法名和方法所在的dll等索引信息,并不包含方法的具体实现,方法的具体实现在dll文件中。在编译阶段我们只需要lib文件,只要相应的lib文件引用没有问题,编译就不会报错。而在运行的时候就需要用到dll文件,如果这个时候在lib文件中方法指定的dll位置找不到该dll文件,就会报错找不到XXX.dll文件。动态文件的好处是,当我们生成exe文件的时候只需要在exe文件包含lib文件就可以,有与lib文件不包含方法的具体实现,所有导出的exe文件一般比较小,但是同时就需要我们运行exe的电脑上面必须有exe文件中包含的lib文件所需要的dll文件。同样我们有多个程序需要用到同一个库的时候,在电脑上只需要有一份dll文件就行了,在需要的时候只要在lib中指定的位置去加载这个dll就可以了。还有就是我们要更新这个dll文件的时候,不需要exe的重新打包。

静态库:静态库就一个lib文件,这个文件中既包含了包的方法名也包含了他所有的实现,所以在引用的时候只要一个lib文件就可以了。但是由于这个lib文件中包含了所有的库内容,所以体积较大,导致生成的exe文件也就比较大。但是我们导出的exe文件放在别的电脑上面就可以直接运行,因为这个exe中已经包含了所有引用库的全部内容。但是如果我们要更新这个静态库中某些方法的时候,就需要对这个exe文件整体重新打包以包含我们更新的内容。

原文地址:https://www.cnblogs.com/maycpou/p/14023418.html