1. 程式人生 > >QT遇到unresolved external symbol "public: virtual struct QMetaObject解決方案

QT遇到unresolved external symbol "public: virtual struct QMetaObject解決方案

出現這個錯誤的原因是沒有為標頭檔案生產moc檔案,在類定義包含Q_OBJECT巨集都是必需有這個moc檔案的。

右擊該標頭檔案,屬性,General的Item Type選擇Custom Build Tool,確定。再重新進入General介面,點選Custom Build Tool,

Command Line輸入:

"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB  "-I.\GeneratedFiles
" "-I." "-I$
(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtNetwork" "-IE:\Program Files (x86)\Visual Leak Detector\include"

Outputs輸入:

.\GeneratedFiles\$(ConfigurationName)\moc
_%(Filename).cpp

additional dependecies輸入:

$(QTDIR)\bin\moc.exe;%(FullPath)

儲存。重新生成解決方案。

這時候GeneratedFiles資料夾下應該多出一個moc_xxxx.cpp。在專案GeneratedFiles手動新增進剛才生成的檔案。再重新生成解決方案即可。