在Linux上将QtCreator 3.0.1与Qt 5.2.1结合使用时遇到问题。我正在尝试使用QtCreator的内置“build”功能编译我的项目,我想它先运行qmake project.pro,然后运行make。我的项目使用QScintilla,我已将其编译到静态库(.a)中,并包含在项目的qscintilla/Qt4Qt5目录中。

编译完成后,编译输出 Pane 将显示以下内容:

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

我的.pro文件包含:
LIBS += -Lqscintilla/Qt4Qt5 -lqscintilla2

但是,通过终端模拟器在项目的根目录上运行qmake,然后运行make可以完美地工作,并且该项目已成功编译和链接。我已经仔细检查了qscintilla/Qt4Qt5目录是否包含文件libqscintilla2.a

最佳答案

由于您似乎正在使用Linux,因此最好将该软件包留在发行版中。安装将静态库带入系统的软件包会更加“麻烦”。

但是,如果您希望坚持项目内构建原则,则建议不要禁用影子构建并创建其他有其自身局限性的解决方法。

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

因此,您将需要编写如下内容:

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

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

关于c++ - QtCreator-无法链接到静态库(ld错误),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21976528/

10-14 09:55