Мне нужно захватить излучаемые сигналы из QProcess для целей тестирования.qt - неопределенная ссылка на `vtable for myObj 'в приложении консоли qt - сигналы и слоты
Поскольку я использую консольное приложение, я решил создать класс в моем файле main.cpp под названием myObj
, используя в основном this example:
#include <QCoreApplication>
#include <QLoggingCategory>
#include <QTextStream>
#include <QProcess>
#include <QString>
#include <QVariant>
#include <QDebug>
#include <QObject>
class myObj : public QObject
{
Q_OBJECT
public:
myObj(QObject *parent = 0);
// virtual ~Communicate();
~myObj();
public slots:
void registerFinished(int signal);
void registerAboutToClose();
void registerChannelReadyRead(int signal);
void registerReadChannelFinished();
void registerReadyRead();
void registerReadyReadStandardOutput();
void registerStarted();
};
myObj::myObj(QObject *parent)
: QObject(parent) <--- LINE 72 Error
{
}
//virtual myObj::~Communicate(){
//}
myObj::~myObj(){ <--- LINE 81 Error
}
void myObj::registerFinished(int signal){
qDebug() << "exit code = " << QString::number(signal);
}
void myObj::registerAboutToClose(){
qDebug() << "aboutToClose";
}
void myObj::registerChannelReadyRead(int signal){
qDebug() << "channelReadyRead = " << QString::number(signal);
}
void myObj::registerReadChannelFinished(){
qDebug() << "readChannelFinished";
}
void myObj::registerReadyRead(){
qDebug() << "exit code";
}
void myObj::registerReadyReadStandardOutput(){
qDebug() << "exit code";
}
void myObj::registerStarted(){
qDebug() << "started";
}
myObj *myO;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
myO = new myObj();
//....
}
Проблема:
main.cpp:72: error: undefined reference to `vtable for myObj'
main.cpp:81: error: undefined reference to `vtable for myObj'
У меня есть просмотрел ряд SO-страниц, например here и here и here и другие, еще не нашел решение
Я попытался/сделали:
- добавлен макрос Q_OBJECT
- побежал QMAKE
- перестроен
- проверил #include
.pro файл
QT += core
QT -= gui
CONFIG += c++11
TARGET = serv_app
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
Любые предложения?
Смотрите, если это полезно: http://stackoverflow.com/questions/3065154/undefined-reference-to-vtable –
удалить Q_OBJECT – eyllanesc
@eyllanesc удаления Q_OBJECT Макрос удалит способность класса, чтобы использовать функции, такие как сигналы и слоты -> http://doc.qt.io/qt-4.8/signalsandslots.html – KGCybeX