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 行添加到我的构建命令中,但仍然没有。我想我可能在安装不同版本的 Qt 以及英特尔编译器的过程中搞砸了一些事情。我将尝试擦除所有这些东西并重新安装它。我严重怀疑项目本身是否存在问题,因为我可以使用相同的工具在不同的机器上构建它。这让我觉得这里的 VS 2008 本地安装有问题。此外,我还看到有人报告说重新安装是解决类似问题的方法。 全新安装什么也没做 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

在Visual Studio 2010中从生成中排除moc-ed文件

在 Visual Studio 项目目录中找不到头文件

从 Visual Studio 2008 升级到 Visual Studio 2010 速成版