解决Qt报“undefined reference to vtable for“错误
今天在Qt工程里添加一个新类OneFunc,点击Qt工具栏的[构建项目]菜单栏时,弹出"undefined reference to vtable for OneFunc"错误。
出现该问题的原因:
- a)该新类没有添加到工程的.pro文件里;
- b)该新类含有Q_OBJECT宏,没有执行qmake命令;
- c)该新类的析构函数,缺少virtual关键字修饰;
- d)该新类的ui, 缺少.moc文件,需要重新moc一下;
这里以OneFunc新类,添加到Qt工程HelloDesk为例,进行说明。
解决方法如下:
1 将新类添加到工程的.pro文件里
要把新类的.h、.cpp、.ui文件声明,添加到工程的.pro文件里,这里以OneFunc类为例,进行说明。由于OnFunc只有OneFunc.h、OneFunc.cpp,没有.ui文件,所以只需要添加前2项即可。
//工程配置文件: HelloDesk.pro
SOURCES += \
OneFunc.cpp
HEADERS += \
OneFunc.h