首頁  >  文章  >  後端開發  >  為什麼在使用 Q_OBJECT 時出現「未定義的 vtable 引用」錯誤?

為什麼在使用 Q_OBJECT 時出現「未定義的 vtable 引用」錯誤?

Linda Hamilton
Linda Hamilton原創
2024-10-27 07:30:03272瀏覽

Why am I getting an

使用Q_OBJECT 時出現「對vtable 的未定義引用」錯誤

連結器找不到時會出現「'對vtable 的未定義引用'”錯誤繼承自QObject 並宣告Q_OBJECT 巨集的類別的虛函數表(vtable)。出現此錯誤的原因有很多。

可能的原因:

  • 缺少MOC 單元: MOC(元物件編譯器)產生一個單獨的單元文件,其中一個包含QObject 相關功能的實作。確保 MOC 產生的單元包含在連結過程中。
  • 實作文件中的類別聲明: 將類別聲明放在單獨的頭檔中,而不是實作文件中。建置系統可能不會掃描 MOC 處理的實作檔。
  • 缺少 qmake 呼叫: Qmake 產生 MOC 所需的建置規則。如果該類別最初不屬於 Qt 元物件系統,請再次執行 qmake 來更新其時間戳記並觸發其執行。

解決方案:

要解決此問題,請按照下列步驟操作:

  1. 將類別聲明移至單獨的頭檔。
  2. 從 Qt Creator 的專案上下文選單中執行「Run qmake」或手動執行更新專案檔案的時間戳記以強制呼叫 qmake。
  3. 確保產生的 MOC 單元包含在連結過程中。

這些措施應該消除「對 vtable 的未定義引用」錯誤並允許您的程式碼成功編譯。

以上是為什麼在使用 Q_OBJECT 時出現「未定義的 vtable 引用」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn