我在Qt v4.8.5中的插槽和信号代码出现了一个奇怪的错误。每当我将QObject
包含在插槽中时
class dnEventHandler : public QObject
{
Q_OBJECT
public slots:
void LaunchProjectCreator();
};
我得到一些奇怪的错误:
Main.cc:(.text.startup+0x4b): undefined reference to `vtable for dnEventHandler'
Main.cc:(.text.startup+0x19e): undefined reference to `vtable for dnEventHandler'
Main.cc:(.text.startup+0x20d): undefined reference to `vtable for dnEventHandler'
我认为这很奇怪,因为似乎错误与.pro
中的标题有关,但我已经在.pro
中的包含路径中使用了标题,如下所示:< / p>
INCLUDEPATH += ../../include/
为什么我的包含路径中的标题会得到这样的未定义引用?
答案 0 :(得分:1)
这个问题有两种解决方案,但是您的具体问题可能归结为将查询头文件放入HEADERS
变量的相同根本原因。完成此操作后,您可能需要确保重新发出qmake
命令。
基于你的问题,由于我们既没有看到你的构建系统,也没有看到源文件,所以它不能完全独立完成这项工作,但是:
1)使构建系统解决问题。这开始看起来更简单。
2)在源文件的末尾使用#include "foo.moc"
来避免它。一旦生成moc文件,该版本将以相同的方式与任何构建系统一起使用。
答案 1 :(得分:0)
原来 可以在.pro
中手动指定所有带标题的标题:
HEADERS += yourHeader.h
Qt必须使用它来生成MOC(元对象代码)文件。