【发布时间】:2015-12-09 12:27:38
【问题描述】:
我使用 Qt 编译了 minimal example 的代码,并注意到链接到它的 .lib 文件增加了我编译的程序链接到其对应的 .dll 文件的要求。
我想自己创建一个.lib 以供我的其他项目使用,但我想这样做而不必同时创建一个.dll 以使其必须链接到。
来自这个问题的答案:Difference between static and shared libraries?
静态库是 .a(或 Windows 中的 .lib)文件。所有与库相关的代码都在这个文件中,并且在编译时直接链接到程序中。使用静态库的程序从静态库中获取它使用的代码的副本,并使其成为程序的一部分。 [Windows 也有用于引用 .dll 文件的 .lib 文件,但它们的作用与第一个相同]。
我理解有两种类型的 .lib 文件是否正确:
- 一种将其中的代码复制到已编译程序中的类型(无需
.dll链接) - 一种将
.dll文件的引用添加到编译程序中的类型
如果这一观察是正确的,如何编译其中一种类型的 .lib?
【问题讨论】:
-
取决于您的实际工具链。大多数编译器都支持链接器标志,例如
-static和-shared。 -
如果您使用 Visual Studio,则选择 DLL 或静态库作为您的项目类型。
-
在 linux/unix 中你可以使用
ar命令来创建静态库。看看这个:thegeekstuff.com/2010/08/ar-command-examples
标签: c++ dll static-libraries