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

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