qt5 неопределенная ссылка на 'QApplication::QApplication(int&, char**, int)'
Я пытаюсь запустить простой пример hello world, и мне уже понадобилось некоторое время, чтобы выяснить, что включает в себя использование. Теперь я проверил пути включения, QApplication на самом деле должен быть там, но он выдает вышеуказанную ошибку. Для наглядности мой код:
#include <QtWidgets/QApplication>
#include <QtWidgets/QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton *button = new QPushButton("Hello world!");
button->show();
return app.exec();
}
Я попытался скомпилировать сначала qmake -project, затем qmake и, наконец, make, а затем получил следующие ошибки:
qt_hello_world.o: In function 'main':
undefined reference to QApplication::QApplication(int&, char**, int)
qt_hello_world.cpp: undefined reference to QPushButton::QPushButton(QString const&, QWidget*)
qt_hello_world.cpp: undefined reference to QWidget::show()
qt_hello_world.cpp: undefined reference to QApplication::exec()
qt_hello_world.cpp: undefined reference to QApplication::~QApplication()
qt_hello_world.cpp: undefined reference to QApplication::~QApplication()
Makefile, созданный qmake, содержит правильный путь включения к каталогу qt5, который содержит QtWidgets/QApplication, файл QApplication просто включает заголовок qapplication.h, который содержит фактический класс QApplication
0 ответов
Учебник https://wiki.qt.io/Qt_for_Beginners полностью обновлен, поэтому вы должны его изменить. Изменить на:
TEMPLATE = app
TARGET = callboot-ui.exe
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
HEADERS +=
SOURCES += main.cpp
TL; DR;
В случае jww это ошибка в следующей строке.pro:
greaterThan(QT_MAJOR_VERSION, 5): QT += core gui widgets
Ошибка вызвана тем, что greaterThan(QT_MAJOR_VERSION, 5)
проверяет, что основная версия Qt больше 5, чтобы добавить подмодули, но последняя версия Qt - 5.13.2 не больше 5, поэтому она не связывает модули, вызывающие показанную ошибку.
В учебнике greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
используется для поддержки.pro, чтобы его можно было скомпилировать для Qt4 и Qt5, поскольку в последнем виджеты перемещены в новый подмодуль, называемый виджетами.