visual studio 2008 moc 找不到 mainwindow.h
Posted
技术标签:
【中文标题】visual studio 2008 moc 找不到 mainwindow.h【英文标题】:visual studio 2008 moc cant find mainwindow.h 【发布时间】:2015-11-03 22:13:27 【问题描述】:我在 Visual Studio 2008 上为一堆使用 Qt 的 C++ 项目设置了构建环境。我已经有一段时间不需要重新编译代码了,但是我的系统肯定发生了一些变化,因为它不再工作了。
据我所知,所有环境变量仍然正确,而且我还没有更新 Visual Studio 或 Qt。
我得到的错误是:
1>MOC mainwindow.h
1>The system cannot find the path specified.
1>moc: mainwindow.h: No such file
1>Project : error PRJ0019: A tool returned an error code from "MOC mainwindow.h"
根据我的构建日志,有问题的行是:
C:\QtSDK\Desktop\Qt\4.8.1\msvc2008\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"..\..\..\..\QtSDK\Desktop\Qt\4.8.1\msvc2008\include\QtCore" -I"..\..\..\..\QtSDK\Desktop\Qt\4.8.1\msvc2008\include\QtGui" -I"..\..\..\..\QtSDK\Desktop\Qt\4.8.1\msvc2008\include" -I"..\..\LSL\liblsl\bin" -I"..\..\..\..\QtSDK\Desktop\Qt\4.8.1\msvc2008\include\ActiveQt" -I"debug" -I"." -I..\..\..\..\QtSDK\Desktop\Qt\4.8.1\msvc2008\mkspecs\default -D_MSC_VER=1500 -DWIN32 mainwindow.h -o debug\moc_mainwindow.cpp
(抱歉这么久)。它表明正在调用 moc.exe,但找不到 mainwindow.h(它在项目目录中,并且肯定是包含目录)。
我重新运行了 qmake qmake -project
(感谢 J-Mik!),但现在它挂在 uic 上
1>UIC mainwindow.ui
1>The system cannot find the path specified.
1>File 'mainwindow.ui' is not valid
1>Project : error PRJ0019: A tool returned an error code from "UIC mainwindow.ui"
该文件当然是有效的(它在 Qt creator 中打开)。同样奇怪的是,构建日志仍在拍摄关于 moc 的错误:
C:\QtSDK\Desktop\Qt\4.8.1\msvc2008\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"..\..\..\..\QtSDK\Desktop\Qt\4.8.1\msvc2008\include\QtCore" -I"..\..\..\..\QtSDK\Desktop\Qt\4.8.1\msvc2008\include\QtGui" -I"..\..\..\..\QtSDK\Desktop\Qt\4.8.1\msvc2008\include" -I"..\..\LSL\liblsl\bin" -I"..\..\..\..\QtSDK\Desktop\Qt\4.8.1\msvc2008\include\ActiveQt" -I"debug" -I"." -I..\..\..\..\QtSDK\Desktop\Qt\4.8.1\msvc2008\mkspecs\default -D_MSC_VER=1500 -DWIN32 mainwindow.h -o debug\moc_mainwindow.cpp
if errorlevel 1 goto VCReportError
goto VCEnd
:VCReportError
echo Project : error PRJ0019: A tool returned an error code from "MOC mainwindow.h"
exit 1
:VCEnd
【问题讨论】:
您是否尝试过在您的项目上再次运行 qmake? 是的,确实有效果,但还没有快乐。我仍然有问题。我会修改问题。 【参考方案1】:运行 moc 时,当前目录的文件相对路径不正确。您可以通过将 echo %cd%
添加到运行 moc 的自定义构建步骤来识别实际目录。
【讨论】:
在我的 vcproj 文件中,我有这些行:`echo %cd%
不能解决任何问题,它只是让您在运行 moc 时查看当前目录。如果 moc 说它找不到文件,那么你给 moc 的参数并不指向一个实际的文件。【参考方案2】:
删除并重新导入 mainwindow.h 就可以了。现在编译器找不到 mainwindow.ui 文件(uic 需要)。
【讨论】:
另外,我找到了问题的根源。这一切都与我为一些 shell 命令创建别名的文件的一些冲突有关——特别是调用不同版本的 python,我在这篇文章中给出了答案:***.com/questions/33534162/…以上是关于visual studio 2008 moc 找不到 mainwindow.h的主要内容,如果未能解决你的问题,请参考以下文章
Win7下在Visual Studio 2008里运行程序时出现找不到MFC90D.dll文件, Command Prompt找不指定路径
在 Visual Studio 2010 中为新 QOBJECT 文件生成 MOC
在visual studio 2010中为新的QOBJECT文件生成MOC