40

我花了很长时间寻找清楚地解释了如何在 Qt Creator 中使用静态库的文档。

我已经使用 Qt Creator 创建并编译了我的静态库(New=>Projects\C++ Library=>Set type to "Statically Linked Library")。它编译并吐出一个“.a 文件”。

我遇到的问题是当我尝试使用该库时。我有另一个想要使用它的项目(库中的#include 文件等),但我不知道与库链接或包含库中的文件的正确方法。

4

5 回答 5

38
LIBS += -L[path to lib] -l[name of lib]

笔记!lib 的文件名: lib[nameOfLib].a 并且您只需要传递原始部分 -l[nameOfLib]

于 2009-09-01T08:42:23.733 回答
19

..来自 QT 项目创建者

  1. 从左侧菜单转到 projectName.pro
  2. 输入 LIBS +=
  3. 右键单击添加库
于 2011-08-11T23:16:38.037 回答
17

在您使用该库的项目中,使LIBS变量指向您的库路径。
要包含库中的文件,请将库文件夹添加到INCLUDEPATH,然后在代码文件中执行常规 #include。

例如:

# the binary's .pro  
LIBS += c:/mylibs/math.lib
INCLUDEPATH += c:/mylibs

编辑:
-L 告诉 qmake 该路径是一个可以搜索库的目录 -l 告诉它该路径是一个文件,但请注意下面的观察。

从 qmake 文档:

此变量包含要链接到项目中的库列表。您可以使用 Unix -l(库)和 -L(库路径)标志,qmake 将在 Windows 上对这些库执行正确的操作(即,这意味着将库的完整路径传递给链接器)。唯一的限制是库必须存在,qmake 才能找到 -l lib 所在的目录。

注意:在 Windows 上,使用 -l 选项指定库,如上例所示,将导致使用具有最高版本号的库;例如,可能会使用 libmath2.lib 代替 libmathlib。为避免这种歧义, 我们建议您通过包含 .lib 文件名后缀来明确指定要使用的库。

于 2009-09-01T08:37:24.430 回答
16

变体

 LIBS += -L[PATH_TO_LIB_DIR] -l[LIBNAME] 

如果您在同一文件夹中同时具有静态库libLIBNAME.a和动态库,则不起作用 。 在这种情况下,在我的带有QMake v 3.0 的 linux 上,动态链接默认情况下是链接的。 要强制与静态链接,您需要在没有任何选项的情况下明确指定它。libLIBNAME.soPATH_TO_LIB_DIR

LIBS += PATH_TO_LIB_DIR/libLIBNAME.a
于 2015-05-14T11:14:28.583 回答
2

是吗

LIBS += -L"/some path" -l"somename.a"

或者

LIBS += -L/somepath -lsomename.a

或者

LIBS += -L/somepath -lsomename"

这应该尽可能简单,但由于某种原因,很难找到搜索结果,因为有很多人寻求帮助的论坛点击量很大,我已经遵循了我能得到的每一个提示,但没有任何帮助。 ..

于 2012-03-14T03:12:47.200 回答