Qt: неопределенная ссылка на `vtable for
Когда я пытаюсь скомпилировать свою программу, я получаю сообщение об ошибке
obj/backgroundWorker.o: In function `BackgroundWorker':
.../backgroundWorker.cpp:6: undefined reference to `vtable for BackgroundWorker'
obj/backgroundWorker.o: In function `~BackgroundWorker':
.../backgroundWorker.cpp:14: undefined reference to `vtable for BackgroundWorker'
Я уже нашел множество причин этой ошибки, но до сих пор не смог решить проблему в своем коде:
backgroundWorker.hpp
#include <QObject>
#include <QPushButton>
class BackgroundWorker : public QWidget{
Q_OBJECT
public:
explicit BackgroundWorker();
~BackgroundWorker();
private slots:
void start();
private:
QPushButton* mStartButton;
};
backgroundWorker.cpp
#include <iostream>
#include "getInput.hpp"
#include "backgroundWorker.hpp"
#include "LIF_network.hpp"
BackgroundWorker::BackgroundWorker(){
mStartButton = new QPushButton("Start",this);
mStartButton->setGeometry(QRect(QPoint(100,100),QSize(200,50)));
connect(mStartButton, SIGNAL(released()), this, SLOT(start()));
}
BackgroundWorker::~BackgroundWorker(){
delete mStartButton;
}
void BackgroundWorker::start(){
//stuff not related to qt
}
main.cpp
#include <QApplication>
#include "backgroundWorker.hpp"
int main(int argc, char *argv[]){
QApplication a(argc, argv);
BackgroundWorker bw;
return a.exec();
}
**.pro файл **
CONFIG += qt debug c++11
QT += widgets
QMAKE_CC = clang++
QMAKE_CXX = clang++
QMAKE_CXXFLAGS += -Wall -Werror -O3
Headers += image.hpp \
getInput.hpp \
LIF_network.hpp \
backgroundWorker.hpp \
SOURCES += main.cpp \
image.cpp \
getInput.cpp \
LIF_network.cpp \
backgroundWorker.cpp \
OBJECTS_DIR = ./obj
0 ответов
Как сказал Фрэнк Остерфельд в комментарии, правильное имя переменной - это верхний регистр. HEADERS
. И он должен содержать список всех заголовков, в которых естьQ_OBJECT
макрос в них
Это необходимо, потому что qmake необходимо знать список файлов заголовков для передачи в moc
.