错误为:
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了。
接着代码复制,或者卸载然后添加都可以