头文件(.h),库文件(.lib)和DLL(.dll)文件是如何相关的

时间:2013-05-19 18:34:23

标签: c visual-c++ visual-studio-2010

我在驱动程序库中看到过这三个文件。这三个文件是如何相关的,文件编译的顺序是什么,每个文件的内容是什么?除此之外,我还看到.a文件与.lib相同?

1 个答案:

答案 0 :(得分:5)

.lib和.dll文件都是Windows库(.o或.obj文件)的可执行文件的容器,前者(.lib)包含 stuff (函数,定义等)您必须静态链接到项目的可执行文件。后者(.dll)要么已经存在于您的系统中,要么将其放入您的系统中,并且它会动态链接到项目的可执行文件。

对于Unix / Linux系统,文件扩展名分别为.a和.so(即.a而不是.lib,.so而不是.dll)。

在所有情况下,在编译项目时,您必须#include您正在使用的库提供给您的一个或多个.h文件(它们被称为头文件),因为那是

中定义了库中可执行文件内的东西

修改

静态链接库的主要优点是它是自包含的(没有外部依赖项),但它会增加您自己的可执行文件的大小。主要缺点是必须重新编译和重新分发未来的版本。

对于动态链接库,我们仅重新分发更新的库可执行文件。主要的缺点是我们的程序依赖于已经安装在客户系统上的库。