Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Eclipse(+integr)+qt+mingw


Автор: Langaru 23.4.2013, 09:26
Доброго дня!

Недавно понадобилось переписать старую програмку. Решил восстановить старую связку, которой пользовался примерно года полтора назад, а именно eclipse + qt + mingw. Очень уж qt понравилось. В итоге не могу построить никакой гуёвый проект. Т.е. консольный СИшный проект собирается без проблем, также как и консольный qt. Стоит только добавить любую форму или виджет - билд уходит в отказ, выводя ошибки в хидерных файлах. Пробовал сразу создавать гуёвый проект и создавать консольный (строится) + добавлять виджет (не собирается).
Связка:
1. minGW 4.7.2 (пробовал более раний)
2. Qt 4.8.4 (пробовал и 5.0)
3. Eclipse Indigo (пробовал и Ганимед и Европу) + пакет интеграции от Тролей (1.6.1 - последний, который нашёл)
Точно помню, что такая связка работала отлично раньше, но теперь чего-то не хватает. А понять что конкретно так и не могу. Гугление ничего не дало. Есть конечно вариант - поставить более ранюю qt (в прошлый раз вроде 4.6.х стояла), но хочется разобраться что с этим не так, да и не факт, что поможет.
Также не понимаю почему появляется пути диска С, хотя всё лежит на E:\Develop.

Ошибки при сброке:

Description    Resource    Path    Location    Type
make: *** [debug] Error 2    QtTest            C/C++ Problem
make[1]: *** [debug\QtTest.exe] Error 1    QtTest            C/C++ Problem
undefined reference to `__gxx_personality_v0'    QtTest        line 0, external location: e:\Develop\Qt\Qt4.8.4\lib\libqtmaind.a(qtmain_win.o):qtmain_win.cpp    C/C++ Problem
undefined reference to `_Unwind_Resume'    QtTest        line 135, external location: c:\iwmake\build_mingw_opensource\src\winmain\qtmain_win.cpp    C/C++ Problem
undefined reference to `_Unwind_Resume'    QtTest        line 512, external location: c:\iwmake\build_mingw_opensource\src\corelib\tools\qvector.h    C/C++ Problem
undefined reference to `_Unwind_Resume'    QtTest        line 513, external location: c:\iwmake\build_mingw_opensource\src\corelib\tools\qvector.h    C/C++ Problem
undefined reference to `_Unwind_Resume'    QtTest        line 93, external location: c:\iwmake\build_mingw_opensource\src\winmain\qtmain_win.cpp    C/C++ Problem

Автор: borisbn 23.4.2013, 12:41
Попробуй QtCreator. IMHO и проще и документации больше. Да и посвежее будет (март 2013-го)

Автор: Langaru 23.4.2013, 13:31
Цитата(borisbn @ 23.4.2013,  12:41)
Попробуй QtCreator. IMHO и проще и документации больше. Да и посвежее будет (март 2013-го)

Eclipse как то уже к телу ближе, да и привык к нему:) Тем более, что creator пишет, что не видит основной хидер.

E:\Develop\WorkCreator\QtTest\mainwindow.h:7: ошибка: QtGui/QMainWindow: No such file or directory

Автор: Langaru 24.4.2013, 07:37
Перепробовав несколько билдов qt, таки нашёл. С qt 4.4.3 проект без проблем собарлся и запустился. 
Что же такого появилось в следующих версиях, что проекты перестают собираться? Может инклюды надо по другому прописывать?

Народ! Неужели никто не в курсе что, да как? Никто не использует eclipse в связке с qt? Или все дружно сидят на старых билдах?

Автор: Langaru 27.4.2013, 22:44
Ну чтож. Раз никто не хочет ничего сказать, то топик можно закрывать.

Автор: kolesnle 27.4.2013, 22:57
Цитата(Langaru @  24.4.2013,  07:37 Найти цитируемый пост)
Что же такого появилось в следующих версиях, что проекты перестают собираться?

Какая версия Qt? Если Qt5 то все понятно, если Qt4, то там дальше тоже много нововведений

Автор: Langaru 27.4.2013, 23:06
Цитата(kolesnle @ 27.4.2013,  22:57)
Какая версия Qt? Если Qt5 то все понятно, если Qt4, то там дальше тоже много нововведений

Например, 4.8.4. 

Автор: kolesnle 27.4.2013, 23:18
какие классы используете?  

Автор: Langaru 28.4.2013, 10:49
Цитата

какие классы используете?  

Извольте прочитать тему с самого начала. Там есть следующее:
Цитата

В итоге не могу построить никакой гуёвый проект. Т.е. консольный СИшный проект собирается без проблем, также как и консольный qt. Стоит только добавить любую форму или виджет - билд уходит в отказ, выводя ошибки в хидерных файлах.

Т.о. я вообще ничего не дописывал в изначальный проект, создаваемый эклипсом.
Если это поможет:
main.cpp
Код

#include "qttest_4_8_4.h"

#include <QtGui>
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QtTest_4_8_4 w;
    w.show();
    return a.exec();
}


qttest_4_8_4.cpp
Код

#include "qttest_4_8_4.h"

QtTest_4_8_4::QtTest_4_8_4(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);
}

QtTest_4_8_4::~QtTest_4_8_4()
{

}


qttest_4_8_4.h
Код

#ifndef QTTEST_4_8_4_H
#define QTTEST_4_8_4_H

#include <QtGui/QWidget>
#include "ui_qttest_4_8_4.h"

class QtTest_4_8_4 : public QWidget
{
    Q_OBJECT

public:
    QtTest_4_8_4(QWidget *parent = 0);
    ~QtTest_4_8_4();

private:
    Ui::QtTest_4_8_4Class ui;
};

#endif // QTTEST_4_8_4_H


ui_qttest_4_8_4.h (автоматически появляется при билде)
Код

/********************************************************************************
** Form generated from reading UI file 'qttest_4_8_4.ui'
**
** Created: Sun 28. Apr 11:45:32 2013
**      by: Qt User Interface Compiler version 4.8.4
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_QTTEST_4_8_4_H
#define UI_QTTEST_4_8_4_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_QtTest_4_8_4Class
{
public:

    void setupUi(QWidget *QtTest_4_8_4Class)
    {
        if (QtTest_4_8_4Class->objectName().isEmpty())
            QtTest_4_8_4Class->setObjectName(QString::fromUtf8("QtTest_4_8_4Class"));
        QtTest_4_8_4Class->resize(400, 300);

        retranslateUi(QtTest_4_8_4Class);

        QMetaObject::connectSlotsByName(QtTest_4_8_4Class);
    } // setupUi

    void retranslateUi(QWidget *QtTest_4_8_4Class)
    {
        QtTest_4_8_4Class->setWindowTitle(QApplication::translate("QtTest_4_8_4Class", "QtTest_4_8_4", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};

namespace Ui {
    class QtTest_4_8_4Class: public Ui_QtTest_4_8_4Class {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_QTTEST_4_8_4_H


Автор: Guinness 29.4.2013, 07:50
http://www.qtcentre.org/threads/33394-Link-errors-undefined-reference-to-_Unwind_Resume-and-__gxx_personality_v0
А эту тему читали? 
Вы сами собирали qt? Может в файле *.pro проблема?

Вот еще более подробно http://stackoverflow.com/questions/8807098/undefined-reference-to-unwind-resume

Автор: Langaru 29.4.2013, 10:33
Цитата

http://www.qtcentre.org/threads/33394-Link..._personality_v0
А эту тему читали? 
Вот еще более подробно http://stackoverflow.com/questions/8807098...o-unwind-resume

Балгодарю за ссылки, но не помогло, хотя проблема идентичная.
Цитата

Вы сами собирали qt? Может в файле *.pro проблема?

Qt сам не собирал, качал sdk.
Какая проблема может быть в pro файлах?
Вот он:
Код

TEMPLATE = app
TARGET = QtTest_4_8_4 

QT        += core gui 

HEADERS   += qttest_4_8_4.h
SOURCES   += main.cpp \
    qttest_4_8_4.cpp
FORMS     += qttest_4_8_4.ui    
RESOURCES +=



Добавлено через 3 минуты и 25 секунд
Кстати, с созданием нового проекта QtTest_4.8.4 ошибок добавилось. Теперь он не может распознать QtTest_4_8_4Class ui и ui.setupUi(this), хотя они присутствуют. Вот полный перечень:
Description    Resource    Path    Location    Type
make: *** [debug] Error 2    QtTest_4.8.4            C/C++ Problem
make[1]: *** [debug\QtTest_4_8_4.exe] Error 1    QtTest_4.8.4            C/C++ Problem
Method 'setupUi' could not be resolved    qttest_4_8_4.cpp    /QtTest_4.8.4    line 6    Semantic Error
Type 'Ui::QtTest_4_8_4Class' could not be resolved    qttest_4_8_4.h    /QtTest_4.8.4    line 16    Semantic Error
undefined reference to `__gxx_personality_v0'    QtTest_4.8.4        line 0, external location: e:\Develop\Qt\Qt4.8.4\lib\libqtmaind.a(qtmain_win.o):qtmain_win.cpp    C/C++ Problem
undefined reference to `_Unwind_Resume'    QtTest_4.8.4        line 135, external location: c:\iwmake\build_mingw_opensource\src\winmain\qtmain_win.cpp    C/C++ Problem
undefined reference to `_Unwind_Resume'    QtTest_4.8.4        line 512, external location: c:\iwmake\build_mingw_opensource\src\corelib\tools\qvector.h    C/C++ Problem
undefined reference to `_Unwind_Resume'    QtTest_4.8.4        line 513, external location: c:\iwmake\build_mingw_opensource\src\corelib\tools\qvector.h    C/C++ Problem
undefined reference to `_Unwind_Resume'    QtTest_4.8.4        line 93, external location: c:\iwmake\build_mingw_opensource\src\winmain\qtmain_win.cpp    C/C++ Problem

Автор: Guinness 29.4.2013, 11:31
Цитата(Langaru @  29.4.2013,  10:33 Найти цитируемый пост)
Кстати, с созданием нового проекта QtTest_4.8.4 ошибок добавилось. Теперь он не может распознать QtTest_4_8_4Class ui и ui.setupUi(this), хотя они присутствуют. Вот полный перечень:

Ну, когда я Ваш пример компилил, он мне тоже самое сказал. Нужно вот так объявить:
Код

Ui::QtTest_4_8_4 ui;

Рекомендую попробовать все разместить на одном диске, желательно на C. И по идее нужно использовать тот компилятор, которым собирался Qt. Если Вы устанавливали SDK, то там вроде есть собственный, а у Вас, такое ощущение используется какой-то другой. Может в этом проблема?

Автор: Langaru 29.4.2013, 12:49
Переписал объявление тоже самое от руки - теперь не ругается. Но основную проблему сие не решает.
Всё лежит в E:\Develop и переносить на C: нет никакого желания в виду многих обстоятельств.
Цитата

И по идее нужно использовать тот компилятор, которым собирался Qt. Если Вы устанавливали SDK, то там вроде есть собственный, а у Вас, такое ощущение используется какой-то другой. Может в этом проблема?

Каким компилятором собирался qt при установке сказать затрудняюсь. Я использую стандартный MinGW. 
Больше всего вводит в ступор то, что на версии qt 4.4.3 всё замечательно собирается и работает, а на более поздних нет.  smile 
Похоже пока лучший вариант вернуться к этой версии.

Автор: Guinness 29.4.2013, 13:09
https://bugreports.qt-project.org/browse/QTBUG-7743?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
Вот что нагуглил. Скорее всего у Вас старая версия компилятора.
Вы в eclipse к какому компилятору прописали путь? Который в SDK вместе qt creator установился или какой-то свой, отдельно скаченный? Если свой, то укажите в eclipse путь у mingw, который находится в папке qt.

Автор: Langaru 29.4.2013, 15:27
Версия MinGW 4.7.2. Если ничего не путаю, последняя. Qt при установки сам компилятор не ставил, но спрашивал путь к же установленному. У эклипса путь прописан именно к mingw, который последний и единственный.
Цитата

No, it doesn't require gcc 4.4. The binary we build was built with that compiler, but you can use other ones.

Т.е. не совсем в этом дело.

Автор: Guinness 29.4.2013, 15:53
А эту тему читали? http://www.eclipse.org/forums/index.php/m/526490/
Может она поможет, там вроде много полезных советов и вопросов, которые могут помочь понять в чем же проблема. Я просто eclipse использовал только для написания helloworld`ов на Java и для работы с Python), так что дельных советов по ее настройке вряд ли дам.
Однако, все таки меня не покидает ощущение, что это компилятор или что-то не так со сборкой библиотеки.) Ну или в PATH, что-то не так прописанно, в чем я сомневаюсь.

Автор: Langaru 29.4.2013, 20:55
Покорнейше благодарю!
Последняя ссылка и Ваши подсказки подтолкнули переставить qt и перекомпилить. Компилирование прошло с 1й ошибкой в конце - нехватка памяти, но проект начал запускаться. Буду рыть дальше, но основная проблема решена! 
Ещё раз благодарности!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)