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

接着代码复制,或者卸载然后添加都可以

猜你喜欢

转载自blog.csdn.net/U201414786/article/details/84869117