QT中修改程序后重新编译无法自动生成moc_MainWindow.cpp解决方法

QT中修改程序后重新编译无法自动生成moc_MainWindow.cpp解决方法

(1)错误信息如下:

1>MainWindow.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct
QMetaObject const * __cdecl MainWindow::metaObject(void)const "
(?metaObject@MainWindow@@UEBAPEBUQMetaObject@@XZ) 1>MainWindow.obj :
error LNK2001: 无法解析的外部符号 “public: virtual void * __cdecl
MainWindow::qt_metacast(char const *)”
(?qt_metacast@MainWindow@@UEAAPEAXPEBD@Z) 1>MainWindow.obj : error
LNK2001: 无法解析的外部符号 “public: virtual int __cdecl
MainWindow::qt_metacall(enum QMetaObject::Call,int,void * *)”
(?qt_metacall@MainWindow@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)
1>MainWindow.obj : error LNK2001: 无法解析的外部符号 “public: static struct
QMetaObject const MainWindow::staticMetaObject”
(?staticMetaObject@MainWindow@@2UQMetaObject@@B)
1>debug\HPVideoSDKDemo_Qt.exe : fatal error LNK1120: 4 个无法解析的外部命令

(2)解决方法
步骤如下:
1.删除moc_MainWindow.cpp文件
QT中修改程序后重新编译无法自动生成moc_MainWindow.cpp解决方法_第1张图片

2.找到QT安装目录bin文件夹下的moc.exe软件;
QT中修改程序后重新编译无法自动生成moc_MainWindow.cpp解决方法_第2张图片

3.打开命令行cmd窗口,在命令行窗口中打开moc.exe软件(直接拖到命令行窗口即可,如图所示)
QT中修改程序后重新编译无法自动生成moc_MainWindow.cpp解决方法_第3张图片
4.>C:\Qt\Qt5.9.2\5.9.2\msvc2017_64\bin\moc.exe “C:\Users\Administrator\Desktop\Demo\MainWindow.h” -o “C:\Users\Administrator\Desktop\Demo\moc_MainWindow.cpp”
QT中修改程序后重新编译无法自动生成moc_MainWindow.cpp解决方法_第4张图片
回车即可生成moc_MainWindow.cpp文件。

5.在Generated Files下添加moc_MainWindow.cpp,重新编译,问题解决。

1>------ 已启动生成: 项目: Demo_Qt, 配置: Debug x64 ------
1>C:\Program Files (x86)\Microsoft Visual
Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(391,5):
warning MSB8028: 中间目录(x64\Debug)包含从另一个项目(PTZ.vcxproj)共享的文件。
这会导致错误的清除和重新生成行为。 1>QtMsBuild: could not locate qt.targets, qt.props;
project may not build correctly. 1>moc_MainWindow.cpp
1>Demo_Qt.vcxproj ->
C:\Users\Administrator\Desktop\Demo\Demo_Qt\debug\Demo_Qt.exe
1>已完成生成项目“Demo_Qt.vcxproj”的操作。
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========

你可能感兴趣的:(qt)