C++ Qt未定义对“vtable for Msnger';
我得到这个错误C++ Qt未定义对“vtable for Msnger';,c++,qt,vtable,C++,Qt,Vtable,我得到这个错误 /.../mainwindow.o:-1: In function `MainWindow::MainWindow(QWidget*)': /.../mainwindow.cpp:-1: Chyba:undefined reference to `vtable for Msnger' 我不明白为什么。我发现导致此消息的唯一问题是没有定义的声明,并且我在代码中没有看到任何错误 这是班长 msnger.h: #include <QObject> class Msnge
/.../mainwindow.o:-1: In function `MainWindow::MainWindow(QWidget*)':
/.../mainwindow.cpp:-1: Chyba:undefined reference to `vtable for Msnger'
我不明白为什么。我发现导致此消息的唯一问题是没有定义的声明,并且我在代码中没有看到任何错误
这是班长
msnger.h:
#include <QObject>
class Msnger : public QObject
{
Q_OBJECT
public:
Msnger() {};
~Msnger() {};
void sendOn();
signals:
void ton() {};
};
Msnger应该向我的主窗口发送消息
在主窗口的构造函数中:
msn = new Msnger();
connect(msn, SIGNAL(ton()),this, SLOT(on()));
其中msn是:
public: Msnger * msn
你能解释一下是什么导致了这个问题,我怎样才能修复它吗?你的编译器不太清楚 确保为定义了Msnger类的头文件运行。生成的moc_*cpp文件是用编译器编译的
注:当QObject继承的类名称以“Q”开头时,这是很好的,例如QMsnger,但不确定您的编译器 确保为定义了Msnger类的头文件运行。生成的moc_*cpp文件是用编译器编译的
注:当QObject继承的类名称以“Q”开头时是好的,例如QMsnger您的问题是,
moc
没有在您的文件上运行,或者其结果没有得到链接
黄金法则是:
QObject
派生类的定义中都存在Q_对象
宏李>
QObject
派生类李>
HEADERS=
列表的.pro文件中李>
Q\u对象
添加到某个类或修改.pro
文件时,请运行qmake
增编:
signals:
void ton() {};
不要执行信号
moc
将为您实现它。您的问题是moc
没有在您的文件上运行,或者其结果没有被链接
黄金法则是:
QObject
派生类的定义中都存在Q_对象
宏李>
QObject
派生类李>
HEADERS=
列表的.pro文件中李>
Q\u对象
添加到某个类或修改.pro
文件时,请运行qmake
增编:
signals:
void ton() {};
不要执行信号
moc
将为您实现它。在哪里可以检查“生成的moc_*cpp文件是否使用我的编译器编译”?在我的项目文件夹中生成的唯一moc_uu文件是moc_umainWindow.cpp。这是正确的还是应该有moc_msnger.cpp?我在哪里可以检查“生成的moc_*cpp文件是否是用我的编译器编译的”?在我的项目文件夹中生成的唯一moc_uu文件是moc_umainWindow.cpp。这是正确的还是应该有moc_msnger.cpp?chyba是捷克语的错误词。“chyba”也是波兰语的“maybe”:)chyba是捷克语的错误词。“chyba”也是波兰语的“maybe”:)太棒了!THX qmake解决了这个问题。我觉得有一个问题,并尝试重建项目与QT的创造者。下次我先手动尝试qmake。构建菜单中有“runqmake”条目。太好了!THX qmake解决了这个问题。我觉得有一个问题,并尝试重建项目与QT的创造者。下次我先手动尝试qmake。在构建菜单中有“runqmake”条目。