簡體   English   中英

qt5 對“QApplication::QApplication(int&, char**, int)”的未定義引用

[英]qt5 undefined reference to '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最終使然后得到了以下錯誤:

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()

qmake 創建的 Makefile 包含正確的包含路徑到包含 QtWidgets/QApplication 的 qt5 目錄,QApplication 文件只包含包含實際類 QApplication 的 qapplication.h 頭文件。

教程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; 博士;

@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 編譯,因為在后者中,widgets 移動到一個名為 widgets 的新子模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM