LINUX.ORG.RU

QT 4.x - ошибка линковки


0

0

В общем решил заняться изучением QT. Наваял вот такой макет:

//main.cpp

#include <qapplication.h>
#include "ui_main.h"

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

    private:
	Ui::MainWindow ui;
};

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

int main (int argc, char **argv) {
    QApplication *qapp;
    qapp = new QApplication(argc, argv);
    MainWindow window;

    window.show();
    return qapp->exec();
}

//проект для qmake
TEMPLATE = app
SOURCES = main.cpp
HEADERS = ui_main.h
CONFIG += qt
FORMS = ui/main.ui

При сборке выдает вот такое:

main.o: In function `MainWindow::MainWindow(QWidget*)':
main.cpp:(.text+0x99): undefined reference to `vtable for MainWindow'
main.cpp:(.text+0xa0): undefined reference to `vtable for MainWindow'
main.o: In function `MainWindow::MainWindow(QWidget*)':
main.cpp:(.text+0xd9): undefined reference to `vtable for MainWindow'
main.cpp:(.text+0xe0): undefined reference to `vtable for MainWindow'
collect2: выполнение ld завершилось с кодом возврата 1
make: *** [nim] Ошибка 1
anonymous

Ты забыл про moc компалер. Он должен сгенерить мета инфу для Q_Object

anonymous
()

Как тебе уже сказали, у тебя не отрабатывает MOC. Чтобы он выполнил свою работу выноси свой класс в отдельные файлы (cpp + h) и добавляй их в проект. В main.cpp должна быть только ф-ия main + инклюды на твой класс. Далее qmake -project + qmake + make. Должно сработать :)

htower_ ★★
()

Когда же вы запомните - не QT, а Qt.

anonymous
()
Ответ на: комментарий от htower_

Спасибо за помощь, всё заработало.

anonymous
()

в Assistant про это написано в разделе Using the Meta Object Compiler и схожих

alex_custov ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.