Qt 链接器错误 Qmake + Makefile

Qt linker errors Qmake + Makefile

我想在 Qt Creator 之外构建一个 Qt 项目,所以我使用 qmake 在以下项目文件上生成一个 Makefile:

TEMPLATE = app
TARGET = test
INCLUDEPATH += . \
               /usr/include/qt5/QtWidgets/
QMAKE_CXXFLAGS += --std=c++11

# Input
SOURCES += test.cc

这也是由 qmake 生成的,禁止 c++11 标志和第二个包含路径。 Makefile 包含 link 个指向 Qt 库的路径

LIBS = $(SUBLIBS) -L/usr/X11R6/lib64 -lQt5Gui -L/usr/lib/x86_64-linux-gnu -lQt5Core -lG L -lpthread

上面的奇怪之处在于我没有 /usr/X11R6 文件夹。相反,libQt5Gui.so 位于 /usr/lib/x86_64-linux-gnu,所以我有点困惑 X11R6 来自哪里。

无论如何,这是我的 linker 输出:

test.cc:(.text.startup+0x20): undefined reference to `QApplication::QApplication(int&, char**, int)'
test.cc:(.text.startup+0x25): undefined reference to `QApplication::exec()'
test.cc:(.text.startup+0x2f): undefined reference to `QApplication::~QApplication()'
test.cc:(.text.startup+0x43): undefined reference to `QApplication::~QApplication()'

以上是构建如下源的结果:

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    return app.exec();
}

当我尝试在 Qt Creator 中构建项目文件时,出现相同的错误。我缺少图书馆吗?还是配置有误?

(我在 Ubuntu 14.04 上,我刚刚从存储库安装了 qtcreator 包,假设所有开发库都将与其一起安装。)

the docs所述,您需要包含小部件库才能使用QApplication

将此添加到您的项目文件中:

QT += widgets

如果您不打算构建 GUI 应用程序,请改用 QCoreApplication。它没有那种依赖性。