• 10357阅读
  • 8回复

Q _OBJECT  错误 [复制链接]

上一主题 下一主题
离线loftyscholar
 

只看楼主 倒序阅读 楼主  发表于: 2008-09-30
— 本帖被 XChinux 执行加亮操作(2008-10-15) —
小弟在头文件中加入Q_OBJECT之后,总是出现如下的错误,不知道该如何解决,恳请大家帮忙,在下不胜感激……
1>LoginDlg.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall CLoginDlg::metaObject(void)const " (?metaObject@CLoginDlg@@UBEPBUQMetaObject@@XZ)
1>LoginDlg.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall CLoginDlg::qt_metacast(char const *)" (?qt_metacast@CLoginDlg@@UAEPAXPBD@Z)
1>LoginDlg.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall CLoginDlg::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@CLoginDlg@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
1>LoginDlg.obj : error LNK2001: 无法解析的外部符号 "public: static struct QMetaObject const CLoginDlg::staticMetaObject" (?staticMetaObject@CLoginDlg@@2UQMetaObject@@B)
1>D:\testqt\Debug\testqt.exe : fatal error LNK1120: 4 个无法解析的外部命令
离线XChinux

只看该作者 1楼 发表于: 2008-10-01
Re:Q _OBJECT  错误
贴上源代码看一下。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线jinnsky

只看该作者 2楼 发表于: 2008-10-01
因为使用Q_OBJECT的话需要先使用moc
不知道你使用的什么开发工具,如果是Code::Blocks,可以参考http://jinnsky2006.spaces.live.com/,这里有篇文章可以教你怎样配置解决这个问题~~
追求卓越 JinnSky
离线loftyscholar

只看该作者 3楼 发表于: 2008-10-01
感谢楼上帮忙,我使用的是VS2005环境
离线x_wp

只看该作者 4楼 发表于: 2008-10-15
我用VC2008也有这个问题,看了本论坛的一些教程,知道问题就出在Q_OBJECT上,在代码中使用Q_OBJECT后,必须要用相应的头文件进行moc,据说并不推荐自己moc,而是用qmake,它会自动调用moc和uic,但这样一来就不能直接在VC环境中编译了,可以在命令行下依次执行qmake -project、qmake、nmake进行编译。如果要在VC中进行调试,可以用qmake -project、qmake -t vcapp -o yourfile.vcproj,来产生VC工程,再用VC打开进行编译、调试。

不知道通过这几天的功课自己理解的对不对,请高手指教,谢谢!
离线x_wp

只看该作者 5楼 发表于: 2008-10-15
再不然就是用Qt的商业版,可以进行VC整合,不过好像开发的Qt程序发布的时候比较麻烦。
离线XChinux

只看该作者 6楼 发表于: 2008-10-15
Re:Q _OBJECT  错误
先用qmake -t vcapp来是成VC 200X的工程文件,然后再用VC 200X打开这个工程文件就能正常编译了。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线downstairs

只看该作者 7楼 发表于: 2010-07-12
Re:Q _OBJECT  错误
我也碰到了。。比较麻烦
喜爱编程的猫头鹰
离线龙平安

只看该作者 8楼 发表于: 2010-07-12
Re:Q _OBJECT  错误
原因很简单,你的 .pro项目文件没有包含.h文件。 这样moc 不会生成那些静态函数的实例!
快速回复
限100 字节
 
上一个 下一个