Mar*_* H. 7 c++ qt linker-errors qt5 qapplication
我正在尝试运行一个简单的 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();
}
Run Code Online (Sandbox Code Playgroud)
我试图用第一编译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()
Run Code Online (Sandbox Code Playgroud)
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.cppRun Code Online (Sandbox Code Playgroud)
在@jww的情况下,它在 .pro 的以下行中出现错误:
greaterThan(QT_MAJOR_VERSION, 5): QT += core gui widgets
Run Code Online (Sandbox Code Playgroud)
错误是因为greaterThan(QT_MAJOR_VERSION, 5)验证Qt的主版本大于5来添加子模块,但Qt的最新版本是5 .13.2不大于5,所以没有链接导致显示错误的模块。
在教程greaterThan(QT_MAJOR_VERSION, 4): QT += widgets中用于支持 .pro 以便它可以为 Qt4 和 Qt5 编译,因为在后者中,小部件移动到一个名为小部件的新子模块。
| 归档时间: |
|
| 查看次数: |
3211 次 |
| 最近记录: |