LINUX.ORG.RU

[qt] undefined reference to `vtable for

 


0

0

base_filter.h

#ifndef BASE_FILTER_H
#define BASE_FILTER_H

#include <QString>

class QMCBaseFilter
{
    public:
    virtual QString getArguments()=0;
};


#endif // BASE_FILTER_H

crop.h

#ifndef CROP_H
#define CROP_H

#include <QtGui/QWidget>
#include <QString>

#include "ui_crop.h"
#include "defines.h"
#include "base_filter.h"


class QMCFilterCrop :
	public QWidget,
	public QMCBaseFilter
{
    private:
	Q_OBJECT
    public:
	QMCFilterCrop(QWidget *parent = 0);
	QString getArguments();
    private:
	Ui::crop_gui gui;
};

#endif // CROP_H

crop.cpp
#include "crop.h"

//-----------------------------------------------------------------------------
QMCFilterCrop::QMCFilterCrop(QWidget *parent)
	:QWidget(parent)
{
    gui.setupUi(this);
}
//-----------------------------------------------------------------------------
QString QMCFilterCrop::getArguments()
{
    return QString();
}


crop.o: In function `QMCFilterCrop':
/mnt/develop/projects/qmediaconverter/src/filters/crop.cpp:5: undefined reference to `vtable for QMCFilterCrop'
/mnt/develop/projects/qmediaconverter/src/filters/crop.cpp:5: undefined reference to `vtable for QMCFilterCrop'
/mnt/develop/projects/qmediaconverter/src/filters/crop.cpp:5: undefined reference to `vtable for QMCFilterCrop'
/mnt/develop/projects/qmediaconverter/src/filters/crop.cpp:5: undefined reference to `vtable for QMCFilterCrop'
/mnt/develop/projects/qmediaconverter/src/filters/crop.cpp:5: undefined reference to `vtable for QMCFilterCrop'
crop.o:/mnt/develop/projects/qmediaconverter/src/filters/crop.cpp:5: more undefined references to `vtable for QMCFilterCrop' follow
collect2: ld returned 1 exit status
make: *** [qmediaconverter] Ошибка 1
Завершено с кодом возврата 2.

Я уже весь мозг сломал и в отчаянии. Хреновый из меня видимо кодер.



Последнее исправление: ShTH (всего исправлений: 1)

Телепаты опять в отпуске, так что стоит всет-таки написать полностью команды как ты компилируешь код.

theos ★★★
()
Ответ на: комментарий от theos

[code]
# #####################################################################
# Automatically generated by qmake (2.01a) ?? ????. 17 20:07:43 2010
# #####################################################################
QT += xml
TEMPLATE = app
TARGET = qmediaconverter

# DESTDIR = bin
DEPENDPATH += . \
src/acodec \
src/progs \
src/tools \
src/vcodec
INCLUDEPATH += . \
src/acodec \
src/progs \
src/tools \
src/vcodec \
src/common

# Input
HEADERS += src/acodec/mp3lame.h \
src/progs/video_converter.h \
src/tools/video_probe.h \
src/tools/xml_manipulator.h \
src/vcodec/base_codec.h \
src/vcodec/lavc.h \
src/vcodec/nuv.h \
src/vcodec/x264enc.h \
src/vcodec/xvidenc.h \
src/common/defines.h \
src/filters/crop.h \
src/filters/base_filter.h \
src/filters/flip.h
FORMS += src/progs/video_converter.ui \
src/acodec/mp3lame.ui \
src/vcodec/lavc.ui \
src/vcodec/nuv.ui \
src/vcodec/x264enc.ui \
src/vcodec/xvidenc.ui \
src/filters/crop.ui \
src/filters/flip.ui
SOURCES += src/acodec/mp3lame.cpp \
src/progs/video_converter.cpp \
src/tools/video_probe.cpp \
src/tools/xml_manipulator.cpp \
src/vcodec/lavc.cpp \
src/vcodec/nuv.cpp \
src/vcodec/x264enc.cpp \
src/vcodec/xvidenc.cpp \
src/test.cpp \
src/vcodec/base_codec.cpp \
src/filters/crop.cpp \
src/filters/flip.cpp
OTHER_FILES += doc/SPECIFICATIONS \
doc/TODO.txt \
doc/BUGS.txt
RESOURCES += qmediaconverter.qrc

[/code]

ShTH
() автор топика

Я может конечно чего не понимаю, но у тебя QMCFilterCrop наследует QWidget и QMCBaseFilter. Но в конструкторе есть кусок для QWidget, и нет для QMCBaseFilter.

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

Дело в том, что я делал точно так же, и работало. (сверял с текущим, вроде всё идентично)

ShTH
() автор топика

достали вопросы по Qt и ленивые кодеры, которым лень разбираться самим.

mono ★★★★★
()
Ответ на: комментарий от mono

>достали вопросы по Qt и ленивые кодеры, которым лень разбираться самим.

Меня самого достало. Но надо.

ShTH
() автор топика

Выкинул Qt и всё скомпилировалось.

Можете привести остальной код?

например файла main?

keeper_b ★★★★
()
Ответ на: комментарий от keeper_b

>например файла main?

Там всё страшное и тестовое. Помогло сделать

qmake && make clean && make

в консоли. Опять moc чудит, мать его за ногу...

ShTH
() автор топика

crop.h надо moc'ом обработать и получившийся файл скомпилировать/слинковать

Reset ★★★★★
()
Ответ на: комментарий от Reset

>crop.h надо moc'ом обработать и получившийся файл скомпилировать/слинковать


Да я уже понял, спасибо. Но почему-то остальные файлы QtCreator автоматом подхватывал :)

ShTH
() автор топика
Ответ на: комментарий от Reset

Макрос Q_OBJECT в private? О.о поперхнулся чаем... Посмотрел на множественное наследование и поперхнулся второй раз

Gorthauer ★★★★★
()
Ответ на: комментарий от Gorthauer

>Макрос Q_OBJECT в private?


Классы с этим макросом потом не наследуются.

ShTH
() автор топика

> Хреновый из меня видимо кодер.

Да. // К.О.

CL-USER
()

в таких случаях обычно достаточно запустить qmake

A2K
()
Ответ на: комментарий от ShTH

>Да я уже понял, спасибо. Но почему-то остальные файлы QtCreator автоматом подхватывал

Не всегда.

Я с некоторой периодичностью всё равно заставляю пересобираться всему проекту.

keeper_b ★★★★
()

>QMCFilterCrop
не стоит приписывать своим классам Q.
потом можешь запутаться, какой класс у тебя самописный, какой - принадлежность Qt

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