Qt出現錯誤“undefined reference to `vtable for 錯誤

在桌面版上新增加抓軌功能,因此需要新增加類,後面爲了讓抓軌過程中不影響其他界面的操作,不至於其他界面不能響應,因此將抓軌過程放到一個線程中去處理QThread

在這個類的頭文件中式沒有 Q_OBJECT宏聲明的,如果想使用signal-slot信號,就需要添加Q_OBJECT宏,但是添加了這個宏後,就可能會出現這種錯誤,“undefined reference to vtable for AudioRipThread'”的編譯錯誤

這是因爲在Makefile裏面沒有這個類並沒有Q_OBJECT信息,所以在執行Makefile時候也就沒有moc xxx.h這條命令,最終導致連接失敗。

知道了這個原因後,解決方法就很簡答了,

重新運行qmake,生成Makefile,然後在編譯就OK

 

AudioRipThread.o:In function `AudioRipThread::AudioRipThread(QObject*)':

AudioRipThread.cpp:(.text+0xe4):undefined reference to `vtable for AudioRipThread'

AudioRipThread.o:In function `AudioRipThread::~AudioRipThread()':

AudioRipThread.cpp:(.text+0x160):undefined reference to `vtable for AudioRipThread'

AudioRipThread.o:In function `AudioRipThread::startRipSlot()':

AudioRipThread.cpp:(.text+0x658):undefined reference to `AudioRipThread::sgRipInfoSend(int, int, float)'

AudioRipThread.cpp:(.text+0x828):undefined reference to `AudioRipThread::sgRipResultInfo(QStringList)'

collect2: ldreturned 1 exit status

 

[[email protected]]# qmake

[[email protected]]# make


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章