5

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

4

1 回答 1

6

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

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

在所有情况下,在编译您的项目时,您必须#include使用您正在使用的库提供给您的一个或多个 .h 文件(它们称为头文件),因为这是定义库可执行文件中的内容的地方。

编辑

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

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

于 2013-05-19T19:02:40.223 回答