首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Qt 編譯錯誤:undefined reference to vtable 解決方案 — 重新運行 qmake

     編輯:程式設計綜合問答

錯誤現象

類中添加 Q_OBJECT 宏後編譯報錯:
undefined reference to `vtable for btnStyle'

根本原因

Q_OBJECT 宏要求 Qt 元對象編譯器 (moc) 生成額外代碼。若構建系統未重新運行 moc,鏈接階段找不到虛表符號。

解決步驟

  1. Qt Creator 中:菜單 Build → Run qmake。
  2. 或命令行:qmake && make clean && make。
  3. 確認 .pro 文件包含 HEADERS += your_header.h。

預防措施

  • 添加/移除 Q_OBJECT、信號槽、屬性後必須重新 qmake。
  • 使用 CMake 時確保 qt5_wrap_cpp() / qt6_add_executable() 正確處理頭文件。

最佳回答

問題
在一個類中添加了宏 Q_OBJECT 後,編譯運行報錯 undefined reference to vtable for ...
解決
重新運行qmake。Qt Creator 中,點擊菜單欄 Build 中的 Run qmake,然後重新運行就會正常。......

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved