我在驱动库中看到了这三个文件。这三个文件有什么关联,编译的顺序是什么,每个文件的内容是什么?此外,我还看到了 .a 文件,它们和 .lib 文件相同吗?
.lib和.dll文件都是Windows库(.o或.obj文件)的可执行文件容器,前者(.lib)包含您必须静态链接到项目的可执行文件的内容(函数、定义等)。后者(.dll)已经存在于您的系统中或者您将其放入您的系统中,并且它会动态链接到您的项目的可执行文件。
对于Unix/Linux系统,文件扩展名分别为.a和.so(即.lib变为.a,.dll变为.so)。
在所有情况下,在编译您的项目时,您必须#include
一个或多个由您正在使用的库提供给您的.h文件(称为头文件),因为这就是库的可执行文件中的内容被定义的地方。
编辑
静态链接库的主要优点是它是自包含的(没有外部依赖),但它会增加您自己的可执行文件的大小。主要缺点是未来版本必须重新编译和重新分发。
对于动态链接库,我们只需重新分发更新的库可执行文件。主要缺点是我们的程序依赖于库已经安装在客户系统上。