之前开发了一个Qt的应用程序,现在准备向其中添加一些功能,其中之一就是向其中添加一个窗口,这个窗口要使用到信号和槽,可是就像以前一样,在头文件中使用了宏Q_OBJECT,而在.cpp文件中建立信号和槽的连接,但是重新运行的时候却出现了一些编译错误,主要是link的问题,错误提示说明moc文件的一些问题,具体的错误信息如下:
HIMyClass.obj:: error: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall CHIMyClass::metaObject(void)const " (?metaObject@CHIMyClass@@UBEPBUQMetaObject@@XZ) File not found : HIMyClass.obj
HIMyClass.obj:: error: unresolved external symbol "public: virtual void * __thiscall CHIMyClass::qt_metacast(char const *)" (?qt_metacast@CHIMyClass@@UAEPAXPBD@Z) File not found : HIMyClass.obj
HIMyClass.obj:: error: unresolved external symbol "public: virtual int __thiscall CHIMyClass::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@CHIMyClass@@UAEHW4Call@QMetaObject@@HPAPAX@Z) File not found : HIMyClass.obj
(注:因为我的问题出现的时候没有将我那个工程的出错信息保存下来,但是上面的出错信息和我的程序的出错信息是一致的,只不过工程的名不同而已)
我就一直纳闷了,前段时间开发这个程序的时候使用Q_OBJECT没有出现问题,但是过了一段时间之后就有这个问题了
我首先介绍一下我自己用的开发环境:我使用的是Qt Creater和Qt4.8.1
刚开始我怀疑关于moc文件不见了,但是我想这概率不大呀,我在自己的电脑上开发,没有人碰过我电脑,我也没去弄Qt的设置什么的
于是开始百度,百度半天还是找不到
于是发现百度真不是一般的垃圾,于是弃百度而使用google,google的前几个网页都是有关我这个的,且都是国外的,且都是关于这个问题的,看了一下他们的讨论,知道怎么处理这个问题了
因为这个事花了我整整一天,真是抓狂,于是我得到一个很大很大的结论:百度真的很垃圾,搜索的结果相似度怎么这么差,搜索算法怎么搞的。我决定以后再也不用百度了,以后都用google,不是我崇洋媚外,实在是百度做的太鹾。
现在来说一下这种情况的处理方法:
第一步:Bulid->Clean All
第二步:Build->Run qmake
第三步:Build->Run
到底是什么原因导致这个问题,我现在也不知道,还请各位大牛解释一下