1. 程式人生 > >Qt5 vs2015 連結常見錯誤

Qt5 vs2015 連結常見錯誤

錯誤為:

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了。

接著程式碼複製,或者解除安裝然後新增都可以