本文不想讨论lib文件与dll文件的那些所谓的学术上的比较,什么狗屁如减少内存使用,dll更灵活等等。这类文章再往上一搜一大把。我还是喜欢来点实际的。
lib文件是静态链接文件,在生成可执行文件时,lib文件的内容会添加到可执行的二进制文件中去,所以生成可执行文件之后,运行可执行文件的时候就不在需要lib文件了。所以lib文件成为静态链接文件。
dll文件是动态链接文件,在生成可执行文件时,dll文件的内容不会添加到可执行的二进制文件中去,但是会在可执行的二进制文件中记录下所需的dll文件的名字(注意只是名字)。所以生成可执行文件之后,当运行运行可执行文件的时候,是离不开dll文件的。程序如何找到所需的dll文件呢?有两种查找依据。一种是可执行程序的当前路径,即在可执行文件所在目录搜索dll文件;另一种依据是根据PATH环境变量来查找。
有兴趣的读者可以自行检验一下。