Qt编译错误undefined reference to `vtable for MainWindow'

0. 写在最前面

我是用CMake来构建Qt工程时出现了这个错误,直观意思是MainWindow的虚表没有定义,猜测是某些子类没有构建成功,无法链接。我这里已经按照官方的意思把

set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_PREFIX_PATH 、yourQtPath/5.10.1/gcc_64)

等等都设置了,不至于不成功。

1. 解决办法

找到了几种可能导致这个error的问题:

  1. 类的构造函数、析构函数没有进行定义
  2. 头文件中出现了一些Qt的关键词,如Q_OBJECTsignals等,这时候要将头文件也放到CMakeLists.txtadd_executable中,不然不会将这些关键词编译,也就没有办法正确生成类了。如果使用Qt工程,头文件则要放到.pro文件的HEADERS中。

参考

“undefined reference to `vtable for …’ errors” in Qt derived classes

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章