1. 程式人生 > 其它 >Qt5的一些古怪問題(持續更新,遇到了就記錄下來)

Qt5的一些古怪問題(持續更新,遇到了就記錄下來)

技術標籤:Qt5qt5

Qt5的一些古怪問題

編譯QObject時出現undefined reference to ‘vtable for XXX’

開發環境
Qt5.12, Ubuntu

現象描述:
Qt5編譯時出現:
undefined reference to ‘vtable for XXX’

問題復現

  1. 新建一個C++標準的Class,並且可以正常編譯通過
    class A {
    A()
    }
    
  2. 此時,突然想讓這個Class繼承QObject類,於是手動添加了QObject相關的標識
    #include <QObject>
    class A : public QObject {
    	Q_OBJECT
    	A();
    }
    
  3. 再次編譯就出現 undefined reference to ‘vtable for XXX’ 的錯誤

原因分析
後期改動新增的QObject類,編譯器是無法生成對應的moc_XXX.cpp檔案的,所以無法連結

解決方案

  1. 右鍵Remove移除Class,切忌不要把檔案刪除咯,只是移除工程而已
  2. 再次新增檔案,選擇已有程式碼“Add Existing Files …”
  3. 重新編譯工程即可