无法构建quazip。 moc 编译器不运行。命令行找不到相关的类

Posted

技术标签:

【中文标题】无法构建quazip。 moc 编译器不运行。命令行找不到相关的类【英文标题】:Unable to build quazip. moc compiler dooesn't run. Command line finds no relevant classes 【发布时间】:2018-05-31 15:14:07 【问题描述】:

我刚刚下载了最新版本的quazip。我正在使用 Visual Studio 2012 和 QT 5.1。

需要三个 moc 文件。 Visual Studio 项目似乎没有创建它们。我什至没有看到 moc 编译器在尝试。我尝试从命令行构建它们,但最终得到了空文件。然后链接器会产生很多这样的错误

错误 LNK2001:未解析的外部符号“公共:静态结构 QMetaObject 常量 QuaZipFile::staticMetaObject" (?staticMetaObject@QuaZipFile@@2UQMetaObject@@B)

这是我用来运行 moc 编译器的命令(以及其他两个文件的类似命令):

C:\Tools64\v2.0.6\Qt-5.1.0\bin\moc -o moc_quazipfile.cpp quazipfile.cpp

该命令产生以下错误:

quazipfile.cpp(0):注意:没有找到相关的类。无输出 生成。

我确实在QuaZipFile 中看到了Q_OBJECT 的定义,所以它应该找到了一些东西。

【问题讨论】:

宏可能在头文件中,而不是 .cpp 文件中。 你是说我应该做“C:\Tools64\v2.0.6\Qt-5.1.0\bin\moc -o moc_quazipfile.cpp quazipfile.h”? 是的,当然!只需 grep/file 搜索这些宏 - 你会看到它们在哪里。 【参考方案1】:

我不确定你应该手动运行 moc...

您确定 Visual Studio 的 Qt 插件/插件是最新的吗?

或者,你可以只使用 qmake 来编译。

运行:

qmake quazip.pro

这将根据您的 Qt SDK mkspecs 生成 makefile。如果您使用的是 MSVC,它应该为 nmake 生成一个 makefile。

然后,只需输入

nmake -f Makefile 

从 MSVC 命令行提示符(您的开始菜单中应该有几个条目,具体取决于您正在编译的体系结构)

【讨论】:

【参考方案2】:

看起来关于执行“C:\Tools64\v2.0.6\Qt-5.1.0\bin\moc -o moc_quazipfile.cpp quazipfile.h”的建议可能有效。

显然,用最新的 quazip 发布的 Visual Studio 项目不起作用。

【讨论】:

以上是关于无法构建quazip。 moc 编译器不运行。命令行找不到相关的类的主要内容,如果未能解决你的问题,请参考以下文章

Qt编译QuaZip的过程和使用踩坑--Win平台和Android平台编译

cmake 不使用 QT4_automoc 生成 Qt moc 文件

Qt creator运行出现moc文件错误求大神解答

如果 Q_OBJECT 宏被其他宏删除,则无法编译 MOC 文件:头文件不包含 <QObject>

关于在vs2010中编译Qt项目时出现“无法解析的外部命令”的错误

CoreData 在后台 MOC 的保存操作期间无法完成故障