Qt5 vs2015 連結常見錯誤
阿新 • • 發佈:2019-01-08
錯誤為:
error LNK2001: 無法解析的外部符號 "public: virtual void * __thiscall XXXXX:qt_metacast(char const
環境:vs2015 和qt5.6;
起因:想建立一個繼承qobject的類,新增標頭檔案
#include <QObject>
#include <QtWidgets/QMainWindow>
#include <QMetaType>
class CCamera: public QObject { Q_OBJECT public: explicit CCamera(QObject *parent = 0); ~CCamera(); }
結果 報錯 就是上面的這種;
在網上找資料看了半天,一句話,缺少moc_XXX.cpp;
這個檔案是需要moc.exe生成的。所以直接public:object沒有用的,連結出錯
所以就有方法一 ,使用命令列生成moc_XXX.cpp;
通過cmd進入到此目錄中,然後執行:moc "D:\VC++\QtT\MyDialog\MyDialog\LoginDlg.h" -o "D:\VC++\QtT\MyDialog\MyDialog\moc_LoginDlg.cpp"
具體參考:https://blog.csdn.net/sunxiaoju/article/details/48316271
但是這樣比較麻煩還不如直接先解除安裝該檔案XXX.h,XXX.cpp;
接著新增qtclass,(說白了就是qt類不要用新建項來新增)
新增qt class
就可以看到moc_XXx.cpp了。
接著程式碼複製,或者解除安裝然後新增都可以