我花了很长时间寻找清楚地解释了如何在 Qt Creator 中使用静态库的文档。
我已经使用 Qt Creator 创建并编译了我的静态库(New=>Projects\C++ Library=>Set type to "Statically Linked Library")。它编译并吐出一个“.a 文件”。
我遇到的问题是当我尝试使用该库时。我有另一个想要使用它的项目(库中的#include 文件等),但我不知道与库链接或包含库中的文件的正确方法。
我花了很长时间寻找清楚地解释了如何在 Qt Creator 中使用静态库的文档。
我已经使用 Qt Creator 创建并编译了我的静态库(New=>Projects\C++ Library=>Set type to "Statically Linked Library")。它编译并吐出一个“.a 文件”。
我遇到的问题是当我尝试使用该库时。我有另一个想要使用它的项目(库中的#include 文件等),但我不知道与库链接或包含库中的文件的正确方法。
LIBS += -L[path to lib] -l[name of lib]
笔记!lib 的文件名: lib[nameOfLib].a 并且您只需要传递原始部分 -l[nameOfLib]
..来自 QT 项目创建者
在您使用该库的项目中,使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 文件名后缀来明确指定要使用的库。
变体
LIBS += -L[PATH_TO_LIB_DIR] -l[LIBNAME]
如果您在同一文件夹中同时具有静态库libLIBNAME.a
和动态库,则不起作用 。
在这种情况下,在我的带有QMake v 3.0
的 linux 上,动态链接默认情况下是链接的。
要强制与静态链接,您需要在没有任何选项的情况下明确指定它。libLIBNAME.so
PATH_TO_LIB_DIR
LIBS += PATH_TO_LIB_DIR/libLIBNAME.a
是吗
LIBS += -L"/some path" -l"somename.a"
或者
LIBS += -L/somepath -lsomename.a
或者
LIBS += -L/somepath -lsomename"
这应该尽可能简单,但由于某种原因,很难找到搜索结果,因为有很多人寻求帮助的论坛点击量很大,我已经遵循了我能得到的每一个提示,但没有任何帮助。 ..