环境:vs2005 + qt4.2.3
这是别人写的一套源码,VS2005工程,比较大。
在
编译时出了个奇怪的问题,比如在test.h中有下面的类(大致结构),对应test.cpp
class test : public QTestWidget // 继承自QObject
{
Q_OBJECT
public:
....
private slots:
....
public slots:
....
private:
....
}
刚开始编译时一切正常,但我无意间把“Q_OBJECT”删除了,再编译还是没问题。
奇怪的是当把“Q_OBJECT”重新加上后,编译时就报错:
compiling moc_test.c: fatal error C1010: unexpected end of file while looking for precompiled header.然后问我是不是忘了“stdafx.h”(但stdafx.h已经include了)
(编译test.c时是没问题的,问题出现在编译moc_test.c时。)
这非常奇怪,因为源码本身实际上等于没有改变,为什么后一次就编不通了呢?
对了,在moc_test.c中有一个error,大意是说test.h没有包含<Qobject>,但即使我加上include <Qobject>,编译也还是不成功。但在最初的源码中,这个错误就算存在编译也能通过。
我尝试在VS2005下新建了一个简单的QT工程,但没有发现这样的问题。而且在VC环境中,把鼠标移动到“Q_OBJECT”上时应该能够看到它的定义,但在上面的class test里却看不到,jump to definition操作也不成功。
实在闹不明白怎么回事,请问有人知道如何解决吗?谢谢!
[ 此贴被view在2008-11-19 16:00重新编辑 ]