无法构建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 文件
如果 Q_OBJECT 宏被其他宏删除,则无法编译 MOC 文件:头文件不包含 <QObject>