-2
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QLabel lbl("Hello world");
    lbl.show();
    return a.exec();
}

Текст из .pro файла:

QT -= gui

CONFIG += c++11 console
CONFIG -= app_bundle

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += main.cpp

Выдает кучу ошибок типа undefined reference to 'imp...' и ошибку "Id returned 1 exit status". Как это исправить?

1 Answers1

1

Помимо подключения заголовков вам нужно еще подключить библиотеки для линкера. Решение несколько зависит от того какой системой сборки пользуетесь. В общем случае это флаги -llib и -Lpath.

Как я понял вы хотите консольное приложение, но зачем-то создаёте QLabel виджет... В консольном приложении вывод делается приблизительно так

#include<QDebug>

//qInfo is qt5.5+ only.
qInfo() << "C++ Style Info Message";
qInfo( "C Style Info Message" );

qDebug() << "C++ Style Debug Message";
qDebug( "C Style Debug Message" );

qWarning() << "C++ Style Warning Message";
qWarning( "C Style Warning Message" );

qCritical() << "C++ Style Critical Error Message";
qCritical( "C Style Critical Error Message" );

// qFatal does not have a C++ style method.
qFatal( "C Style Fatal Error Message" );

или

QTextStream& qStdOut()
{
    static QTextStream ts( stdout );
    return ts;
}
...
qStdOut() << "std out!";
Sheridan
  • 3,106