Owe*_*wen 6 c++ qt qt4 opensuse moc
我有一个程序在OpenSuse 11.2和QT 4.5版本中编译得很好.但是,当我使用OpenSuse 11.4和QT 4.7.3编译相同的程序时,我收到此错误消息:
"This file was generated using the moc from 4.7.3. It cannot be used with the include files from this version of Qt. The moc has changed too much"
Run Code Online (Sandbox Code Playgroud)
谁能告诉我发生了什么事?
发生此错误是因为您正在使用在一个版本的Qt上编译的项目.主要原因是Qt使用moc工具为信号槽处理和其他东西创建胶水代码.
Moc通过解析头文件来找到Q_OBJECT,signal:,slot:等定义.
此代码与用于创建此代码的Qt版本完全相关.在某些情况下,即使对于配置了不同选项集的相同版本的Qt库,此代码也完全不兼容.
即使对于.pro中的某些更改,这种情况也是如此,例如,使用CONFIG + = no_keywords导致moc生成不同的粘合代码,从而允许Qt与其他库(如boost)一起使用,这些库使用相同的关键字(如Qt)提供信号槽机制.
因此,简而言之,每当您需要针对不同的Qt库编译Qt项目时,请确保执行以下操作:1.运行:make distclean 2.运行:qmake 3.运行:make
这总会给你一个干净的构建树.