所以我对Qt很陌生,而且我刚从其他同时也是Qt新手的人那里继承了一个项目。顺便说一句,他本周不在身边。我们正在使用Visual Studio 2008,并安装了最新版本的Qt(4.6.2)。
该项目建立在我的同事的机器上,我可以从svn获得项目并直接构建它。但在任何其他情况下,它拒绝在我的机器上构建,并且它没有给我很多解释原因。即使我只是做“构建清洁”然后“构建”它也不起作用。任何轻微的修改都会使它失败。
当我尝试构建整个项目时,我收到错误消息:
1> Moc'ing MatrixTypeInterface.h ... 1> moc:无法创建 \ GeneratedFiles \调试\ moc_MatrixTypeInterface.cpp; \ GeneratedFiles \调试\ moc_matrixtypeinterface.cpp 1>项目:错误PRJ0019:工具 从“Moc'ing”返回错误代码 MatrixTypeInterface.h ...“
moc工具没有提供任何关于它为什么不起作用的错误消息,我昨天大部分时间都在浪费时试图找出原因。我得到了VS用来调用moc的命令,我自己进入了命令行。它没有在屏幕上写任何东西。
有什么想法吗?
答案 0 :(得分:2)
我终于找到了答案。我的同事今天回到了办公室,我用他的机器上的构建日志来获得他的完整moc命令(大约4行)。除了最后,我们的moc命令基本相同。他的命令以:
结束-o“。\ GeneratedFiles \ $(ConfigurationName)\ moc _ $(InputName).cpp”
我的命令以:
结束-o“。\ GeneratedFiles \ $(ConfigurationName)\ moc _ $(InputName).cpp;。\ GeneratedFiles \ Debug \ moc_matrixtypeinterface.cpp”
我检查了该文件的自定义构建步骤,并删除了多余的位。之后,文件编译得很好。我不知道qt如何或为什么决定添加这个额外的花絮,但确实如此。
感谢您的帮助。你们中的一些人怀疑这是一个文件系统问题,实际上在Windows文件名中不允许使用分号。但我觉得根本原因是Qt创建了错误的构建字符串。
我接受了我自己的答案,希望能帮助别人。
答案 1 :(得分:1)
这很可能是文件系统错误,您可能没有“GeneratedFiles”文件夹,或者没有正确的权限。
我遇到过不同版本的moc和加载项使用“Generated”或“Generated Files”或“GeneratedFiles”作为文件夹的问题。检查所有构建步骤的设置。
答案 2 :(得分:0)
您的.vcproj文件可能已损坏。我之前遇到过这个问题,因为有不同版本的Qt和Qt VS插件最终破坏了我的.vcproj文件。有一段时间,我不得不手动修复.vcproj文件(My AdditionalDependencies =“...”行被换掉并切断需要调整的各种头文件,我手动修复了每个新头的那些需要进行调整。)
干净的重新安装Visual Studios + Qt + Qt插件最终解决了这个问题。检查你的.vcproj文件,看看它是否有意义。
答案 3 :(得分:0)
在moc运行之前,您确定文件路径是否正确并且是否存在?由于似乎向moc提供了相对路径,因此我会在运行时找出moc的工作目录。
您的.vcproj文件是如何生成的?是用qmake吗?还是cmake?还是从零开始?