- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Qt编程学习笔记
Qt界⾯开始了~设计阶段解决~关注3d物体控制~arcball功能。
1.Qt与VS2008使⽤配置:
2.Qmake使⽤:
3.errorLNK2001:⽆法解析的外部符号Qt的moc机制
先转⼀下其他⼈的帖,同样是errorLNK2001的问题。
第⼀次来发个帖,如果可能的话期望找到根本原因!
⼏天没有关注我的QT程序,再次拿出来编译后竟然出现连接错误,因为四体不勤,没有频繁的checki,所以⽆法找到中间版本,只能解决
问题了。
1MainWindowBottomWidget.obj:errorLNK2001:⽆法解析的外部符号public:virtualstructQMetaObjectconst*__thiscall
MainWindowBottomWidget::metaObject(void)const()
1MainWindowBottomWidget.obj:errorLNK2001:⽆法解析的外部符号public:virtualvoid*__thiscall
MainWindowBottomWidget::qt_metacast
(charconst*)()
1MainWindowBottomWidget.obj:errorLNK2001:⽆法解析的外部符号public:virtualint__thiscall
MainWindowBottomWidget::qt_metacall(enum
QMetaObject::Call,int,void**)()
问题原因:没有找到根本原因,据说是链接时⽆法找到对应的moc⽂件。
VS2008问题解决⽅法:在对应的cpp⽂件的末尾加上#includemoc_MainWindowBottomWidget.cpp(⽂件名根据实际情况修改)
原因:
1.是否加上了Q_OBJECT宏?
2.你的widget⾥⽤到signalslot了吧?(也许是后续加的)
3.类定义在cpp⾥了?没有相应的.h⽂件?
4.如果以前没信号槽新加的,那么makefile需要重新⽣成。
如果⽤到信号槽但类的定义没有放在.h⽂件中,qmake不会⾃动调moc,你就需要写#includemoc_MainWindowBottomWidget.cpp告诉
qmake你有⽂件需要
moc
在visualstudio中,如果是接下来添加的Q_OBJECT宏、信号函数、槽函数等,由于之前编译过程中没有⽣成moc⽂件,或者该moc⽂件已
被删除,那么新添加
后,visualstudio就不会再⽣成moc⽂件了,这就导致visualstudio在链接时出现以上情况的Error。
我总结的原因如下:
vs在编译时会产⽣⼀系列的命令以控制该.h、.cpp⽂件的编译过程,并且,以后不会⾃动修改这些命令。
利⽤Qt编程时,写好.h、.cpp⽂件并第⼀次编译之后,若.h⽂件中定义类时没有添加Q_OBJECT宏以及信号函数、槽函数,VS编译命令中
就没有moc命令,就不会调⽤Qt的moc⼯具以⽣成moc_*.cpp⽂件;并且即使添加了Q_OBJECT宏之后,VS也不会⾃动添加moc命令,因⽽
不会⽣成moc⽂件。
VS在LINK时,找不到moc⽂件,就出现了errorLNK2001的错误。
修改⽅法:
如果在.cpp⽂件的末尾添加#includemoc_MainWindowBottomWidget.cpp,确实可以解决errorLNK2001的问题。但是,总有⼀种让⼈很
不爽的感觉。我⽤以下的⽅法解决了这个问题:
1.复制⼀份.h、.cpp⽂件并备份起来;
2.在vs⼯区中移除并删除对应⽂件;
3.新建两个空⽩⽂件,命名为*.h、*.cpp,再重新加载这两个⽂件⾄⼯程中;
4.将备份中的.h、.cpp⽂件中的内容复制到新添加的*.h、*.cpp⽂件⾥;
5.重新编译。
您可能关注的文档
最近下载
- 2024年家政服务业职业技能大赛母婴护理员赛项理论试题库(1000题)(含答案).pdf VIP
- 《守规矩成方圆》课件.pptx VIP
- 兽医基础知识培训课件.pptx VIP
- (互联网管理)朵彩的种智慧最新版.doc VIP
- 湖南省名校联考联合体2024-2025学年高一上学期第一次联考地理试题含答案.pdf VIP
- 《标书制作流程培训》课件.pptx VIP
- 大学生职业生涯规划与就业指导(高等教育)全套教学课件PPT.pptx
- 2024-2025学年湖南省名校联考联合体高一上学期第一次联考历史试题(解析版).docx VIP
- 数字信号处理—基于计算机的方法第4章答案.pdf VIP
- 湖南省名校联考联合体2024-2025学年高一上学期第一次联考政治试题 含答案.pdf VIP
文档评论(0)