在VS2015中C++项目会出现报错,我的错误是以下三个外部命令
1.LNK2001 "public: virtual struct QMetaObject const * __cdecl UTMUI::metaObject(void)const " (?metaObject@UTMUI@@UEBAPEBUQMetaObject@@XZ)
2. LNK2001 "public: virtual void * __cdecl UTMUI::qt_metacast(char const *)" (?qt_metacast@UTMUI@@UEAAPEAXPEBD@Z)
3. LNK2001 "public: virtual int __cdecl UTMUI::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@UTMUI@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)
这个是说明报错的这个文件的.h文件里有Q_OBJECT,这个时候需要生成后缀为_moc.cpp结尾的文件。 VS2015中自动生成Qt的moc文件的方法
1.在你的这个.h文件的文件所在目录界面,按住Shift,鼠标右击在空白处,出现一个选框,选择 "在此处打开 Windows PowerShell "
2.打开QT的在C盘的C:\Qt\Qt5.9.5\5.9.5\msvc2015_64\bin(我的是在这里,下载时自动在这里),找到moc.exe,将moc.exe拖到Windows PowerShell里,就会发现moc.exe的地址已经放上去了。
3.将你的问题的文件,也就是Q_OBJECT的.h文件在其文件所在位置的界面上,将它拖到Windows PowerShell里面,就可以在Windows PowerShell里面看到跟着moc.exe后面的是这个.h的地址。
4.在.h文件的地址后面写上 -o (.h文件的名字不加后缀)_moc.cpp ,按住enter就生成好了,你可以在.h文件的同级目录里看到。
如果没有别的错误就可以成功生成了。
给参考下我enter前的PS D:\1-Working\Plugin\TemplateSource> C:\Qt\Qt5.9.5\5.9.5\msvc2015_64\bin\moc.exe D:\1-Working\Plugin\\TemplateSource\stoc.h -o stoc_moc.cpp