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