我很难找到文档,清楚地解释了如何在Qt Creator中使用静态库。
我使用Qt Creator创建并编译了我的静态库(New => Projects \ C ++ Library =>将类型设置为“静态链接库”)。它编译并吐出一个“.a文件”。
我遇到的问题是当我尝试使用该库时。我有另一个想要使用它的项目(库中的#include文件等),但我不知道链接库或包含库中文件的正确方法。
答案 0 :(得分:35)
LIBS += -L[path to lib] -l[name of lib]
请注意! lib:lib [nameOfLib] .a的文件名,你必须只传递原始部分-l [nameOfLib]
答案 1 :(得分:17)
在使用库的项目中,LIBS变量指向lib的路径 要包含库中的文件,请将库文件夹添加到INCLUDEPATH,然后在代码文件中定期执行#include。
e.g:
# the binary's .pro
LIBS += c:/mylibs/math.lib
INCLUDEPATH += c:/mylibs
<强>编辑:强>
-L告诉qmake该路径是一个可以搜索库的目录
-l告诉它路径是一个文件,但请注意下面的观察结果。
来自qmake docs:
此变量包含一个列表 要链接到的库 项目。你可以使用Unix -l (库)和-L(库路径)标志 和qmake将做正确的事情 在Windows上使用这些库 (即这意味着通过全部 库到连接器的路径)。 唯一的限制是 库必须存在,才能找到qmake a -l lib所在的目录。
注意:在Windows上,指定库 使用-l选项,如上所述 例如,将导致库 要使用的最高版本号; 例如,libmath2.lib可以 可能用来代替 libmathlib。为了避免这种模糊, 我们建议你明确 指定要使用的库 包括.lib文件名后缀。
答案 2 :(得分:15)
..来自QT项目创建者
答案 3 :(得分:10)
变体
LIBS += -L[PATH_TO_LIB_DIR] -l[LIBNAME]
如果您在同一文件夹libLIBNAME.a
中同时拥有静态libLIBNAME.so
和动态PATH_TO_LIB_DIR
库,则无效。
在这种情况下,在我的Linux上使用 QMake v 3.0
动态链接默认链接
要强制与静态链接,您需要明确指定它而不需要任何选项。
LIBS += PATH_TO_LIB_DIR/libLIBNAME.a
答案 4 :(得分:2)
是吗
LIBS += -L"/some path" -l"somename.a"
或
LIBS += -L/somepath -lsomename.a
或
LIBS += -L/somepath -lsomename"
这应该很容易,但由于某些原因,搜索结果非常困难,因为有很多人在寻求帮助的论坛,我已经按照每个提示我可以得到但是没有帮助...