Как диагностировать только начинаю изучать Qt, не знаю как убрать ошибки:-1: ошибка: collect2.exe: error: ld returned 1 exit status?

Ссылка скопирована
1 ответ

Нужно понять: создаю проект на qmake с уже готовой формой, но на Qt 6.10.0 static появляются 2 ошибки, при создании проекта на qt 6.9.2 shared и qt 5.5.17 static такой проблемы не возникает, в чём может быть причина?
Файл QT Proj.pro

QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++17 # You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ main.cpp \ mainwindow.cpp HEADERS += \ mainwindow.h FORMS += \ mainwindow.ui # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target

Файл mainwindow.h

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H

Файл main.cpp

#include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }

Файл mainwindow.cpp

#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; }
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Редакция DevOps Ответ

Ошибка collect2.exe: error: ld returned 1 exit status в Qt — это не сама причина, а финальное сообщение линкера: сборка не смогла слинковать exe. Настоящая ошибка обычно выше в логе: undefined reference, конфликт библиотек, несовместимая static/shared сборка, отсутствующий plugin или неправильный kit.

Сначала откройте Compile Output полностью и найдите строки перед collect2.exe. Ищите:

undefined reference to ...
cannot find -l...
multiple definition of ...
file format not recognized

undefined reference to ... cannot find -l... multiple definition of ... file format not recognized

Qt 6.10 static и Qt 6.9 shared — разные сценарии. Static Qt требует подтягивать больше зависимостей и плагинов. То, что shared 6.9.2 собирается, не доказывает, что static 6.10 настроен корректно.

Проверьте kit: компилятор, qmake, MinGW/MSVC должны соответствовать друг другу. Нельзя нормально линковать проект, если Qt собран одним компилятором, а проект собирается другим.

Для формы проверьте, подключены ли исходники:

FORMS += mainwindow.ui
SOURCES += main.cpp mainwindow.cpp
HEADERS += mainwindow.h

FORMS += mainwindow.ui SOURCES += main.cpp mainwindow.cpp HEADERS += mainwindow.h

Если ошибка связана с ресурсами/иконками, проверьте RESOURCES +=. Если с виджетами — в pro должно быть:

QT += core gui widgets

QT += core gui widgets

Итог: collect2 говорит только “линковка упала”. Смотрите строки выше. Для static Qt 6.10 особенно проверьте совместимость kit, компилятора, qmake и недостающие библиотеки/плагины.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно