QtCreator - 无法链接到静态库(ld错误)

时间:2014-02-24 00:05:09

标签: c++ qt qt-creator qmake qscintilla

我在Linux上使用QtCreator 3.0.1和Qt 5.2.1时出现问题。我正在尝试使用QtCreator的内置“构建”功能编译我的项目,我想这会运行qmake project.pro然后make。我的项目使用QScintilla,我将其编译成静态库(.a),并包含在qscintilla/Qt4Qt5的项目目录中。

编译完成后,编译输出窗格显示以下内容:

/usr/bin/ld: cannot find -lqscintilla2
collect2: error: ld returned 1 exit status

我的.pro文件包含:

LIBS += -Lqscintilla/Qt4Qt5 -lqscintilla2

但是,通过终端仿真器在项目的根目录上运行qmake然后make可以正常运行,并且项目已成功编译和链接。我仔细检查过qscintilla/Qt4Qt5目录包含文件libqscintilla2.a

3 个答案:

答案 0 :(得分:1)

由于您似乎在使用Linux,因此最好将软件包与您的发行版一起保留。安装软件包将静态库带入系统将更加“香草”。

但是,如果您希望坚持项目内部构建原则,我建议不要禁用阴影构建并创建具有其自身限制的其他变通方法。

例如,您可以使用$$OUT_PWD variable来实现此目的,但通常,您还需要在组件之间指定目标依赖关系。

所以,你会写这样的东西:

LIBS += -L$$OUT_PWD/qscintilla/Qt4Qt5 -lqscintilla2

请根据您的目录布局进行调整。

答案 1 :(得分:0)

您还应该添加以下行:

PRE_TARGETDEPS += qscintilla/Qt4Qt5/libqscintilla2.a

到您的.pro文件,以便静态链接库。

答案 2 :(得分:0)

管理使其工作:在QtCreator上,单击左侧窗格中的“项目”,这将打开一个选项卡,允许您编辑构建/运行/样式选项。在Build / General部分,禁用“Shadow build”。这将在原始项目目录上构建项目。

编辑:请参阅@ LaszloPapp的答案以获得更好的解决方案。