刚学习Qt4编程,在编译一个小程序的时候出现了链接错误。
报错如下
1>—— 已启动全部重新生成: 项目: Test, 配置: Debug x64 ——
1> FindDialog.cpp
1> main.cpp
1> Generating Code…
1>FindDialog.obj : error LNK2001: unresolved external symbol “public: virtual struct QMetaObject const * __cdecl FindDialog::metaObject(void)const ” (?metaObject@FindDialog@@UEBAPEBUQMetaObject@@XZ)
1>FindDialog.obj : error LNK2001: unresolved external symbol “public: virtual void * __cdecl FindDialog::qt_metacast(char const *)” (?qt_metacast@FindDialog@@UEAAPEAXPEBD@Z)
1>FindDialog.obj : error LNK2001: unresolved external symbol “public: virtual int __cdecl FindDialog::qt_metacall(enum QMetaObject::Call,int,void * *)” (?qt_metacall@FindDialog@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)
1>FindDialog.obj : error LNK2001: unresolved external symbol “public: static struct QMetaObject const FindDialog::staticMetaObject” (?staticMetaObject@FindDialog@@

在使用Qt4和VS2010进行编程时,遇到编译错误LNK2001,涉及QMetaObject等未解析外部符号。问题源于缺少对Q_OBJECT宏的正确处理。Qt的元对象系统是信号槽机制和内省功能的基础,需要通过moc工具生成额外的C++代码。解决方案是在命令行运行moc工具生成moc_FindDialog.cpp文件并将其添加到工程中。
最低0.47元/天 解锁文章
3227

被折叠的 条评论
为什么被折叠?



