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的問題:
- 類的構造函數、析構函數沒有進行定義
- 頭文件中出現了一些Qt的關鍵詞,如
Q_OBJECT
、signals
等,這時候要將頭文件也放到CMakeLists.txt
的add_executable
中,不然不會將這些關鍵詞編譯,也就沒有辦法正確生成類了。如果使用Qt工程,頭文件則要放到.pro文件的HEADERS
中。
參考
“undefined reference to `vtable for …’ errors” in Qt derived classes