Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt moc故障,无错误信息_C++_Visual Studio 2008_Qt - Fatal编程技术网

C++ Qt moc故障,无错误信息

C++ Qt moc故障,无错误信息,c++,visual-studio-2008,qt,C++,Visual Studio 2008,Qt,所以我对Qt很陌生,我刚刚从另一个对Qt也很陌生的人那里继承了一个项目。顺便说一句,他本周不在。我们正在使用Visual Studio 2008,并安装了最新版本的Qt(4.6.2) 该项目建立在我同事的机器上,我可以从svn获得该项目并直接构建它。但在任何其他情况下,它都拒绝在我的机器上构建,也没有给我太多的解释。即使我只是做了一个“干净的构建”,然后又做了一个“构建”,它也不起作用。任何轻微的修改都会使它失败 当我尝试构建整个项目时,会收到错误消息: 1> Moc'ing MatrixTyp

所以我对Qt很陌生,我刚刚从另一个对Qt也很陌生的人那里继承了一个项目。顺便说一句,他本周不在。我们正在使用Visual Studio 2008,并安装了最新版本的Qt(4.6.2)

该项目建立在我同事的机器上,我可以从svn获得该项目并直接构建它。但在任何其他情况下,它都拒绝在我的机器上构建,也没有给我太多的解释。即使我只是做了一个“干净的构建”,然后又做了一个“构建”,它也不起作用。任何轻微的修改都会使它失败

当我尝试构建整个项目时,会收到错误消息:

1> Moc'ing MatrixTypeInterface.h。。。 1> 主运行中心:无法创建 .\GeneratedFiles\Debug\moc\u MatrixTypeInterface.cpp\GeneratedFiles\Debug\moc_matrixtypeinterface.cpp 1> 项目:错误PRJ0019:工具 从“Moc'ing”返回错误代码 MatrixTypeInterface.h.。”

moc工具没有给出任何关于它为什么不工作的错误信息,我浪费了昨天的大部分时间试图找出原因。我得到了VS用来调用moc的命令,我自己输入了命令行。它没有在屏幕上写任何东西


有什么想法吗?

很可能是文件系统错误,您可能没有“GeneratedFiles”文件夹或没有对其的正确权限


我遇到过这样的问题:不同版本的moc和外接程序使用文件夹的“生成的”或“生成的文件”或“生成的文件”。检查所有生成步骤的设置。

您的.vcproj文件可能已损坏。我以前也遇到过这个问题,它是由不同版本的Qt和Qt-VS附加组件导致的,最终损坏了我的.vcproj文件。有一段时间,我不得不手动修复.vcproj文件(我的AdditionalDependencies=“…”行被交换,需要mocced的各种头文件被切断,我正在手动修复每个需要mocced的新头文件)


Visual Studio+Qt+Qt附加组件的重新安装彻底解决了此问题。检查你的.vcproj文件,看看它是否有意义。

在运行moc之前,你确定你的文件路径正确且存在吗?由于似乎向moc提供了相对路径,所以我会在运行moc时找出它的工作目录


您的.vcproj文件是如何生成的?使用了qmake吗?还是克马克?还是白手起家?

我终于找到了答案。我的同事今天回到办公室,我使用他的机器上的构建日志来获取他的完整moc命令(大约4行长)。我们的主运行中心命令基本上是相同的,除了在最后。他的命令以:

-o.“\GeneratedFiles\$(配置名称)\moc\$(InputName).cpp”

我的命令以:

-o.“\GeneratedFiles\$(ConfigurationName)\moc\$(InputName).cpp;\GeneratedFiles\Debug\moc_matrixtypeinterface.cpp”

我检查了该文件的自定义构建步骤,并删除了多余的位。之后,文件编译得很好。我不知道qt是如何或为什么决定添加这个额外的花絮的,但它确实做到了

谢谢你们的帮助。你们中的一些人怀疑这是一个文件系统问题,事实上,windows文件名中不允许使用分号。但我觉得根本原因是Qt创建了错误的构建字符串


我接受自己的答案,希望它能帮助其他人。

所有文件路径都正确,所有文件权限都正确。昨天我对照同事的项目检查了我所有的项目/构建设置,没有发现任何不同。他今天不在,所以我不能再检查任何东西。