在Qt Creator中使用静态库

时间:2009-09-01 08:25:03

标签: c++ linker static-libraries qt-creator

我很难找到文档,清楚地解释了如何在Qt Creator中使用静态库。

我使用Qt Creator创建并编译了我的静态库(New => Projects \ C ++ Library =>将类型设置为“静态链接库”)。它编译并吐出一个“.a文件”。

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

5 个答案:

答案 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项目创建者

  1. 从左侧菜单中转到projectName.pro
  2. 输入LIBS + =
  3. rightClick AddLibrary

答案 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"

这应该很容易,但由于某些原因,搜索结果非常困难,因为有很多人在寻求帮助的论坛,我已经按照每个提示我可以得到但是没有帮助...