Qt5的一些古怪問題(持續更新,遇到了就記錄下來)
阿新 • • 發佈:2021-01-27
Qt5的一些古怪問題
編譯QObject時出現undefined reference to ‘vtable for XXX’
開發環境
Qt5.12, Ubuntu
現象描述:
Qt5編譯時出現:
undefined reference to ‘vtable for XXX’
問題復現
- 新建一個C++標準的Class,並且可以正常編譯通過
class A { A() }
- 此時,突然想讓這個Class繼承QObject類,於是手動添加了QObject相關的標識
#include <QObject> class A : public QObject { Q_OBJECT A(); }
- 再次編譯就出現 undefined reference to ‘vtable for XXX’ 的錯誤
原因分析
後期改動新增的QObject類,編譯器是無法生成對應的moc_XXX.cpp檔案的,所以無法連結
解決方案
- 右鍵Remove移除Class,切忌不要把檔案刪除咯,只是移除工程而已
- 再次新增檔案,選擇已有程式碼“Add Existing Files …”
- 重新編譯工程即可