Qt 报错:moc_mainwindow.obj 无法解析的外部符号

最近刚开始接触Qt,在写程序的时候报了错,如图:

moc_mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "private: void __cdecl MainWindow::do_cursorChanged(void)" (?do_cursorChanged@MainWindow@@AEAAXXZ),该符号在函数 "private: static void __cdecl MainWindow::qt_static_metacall(class QObject *,enum QMetaObject::Call,int,void * *)" (?qt_static_metacall@MainWindow@@CAXPEAVQObject@@W4Call@QMetaObject@@HPEAPEAX@Z) 中被引用

查资料后发现有几种出错原因:

一:项目路径中出现了中文。这种将项目的存储路径全部修改为英文就可以了。

二:之前的qmake文件有问题。Qt重构的时候,给添加了不该加的功能。

        第一种解决方案是在清理项目之后,重新执行qmake,再次构建;

        第二可能是中间文件可能有问题。把用户配置文件.user删掉,重新再开项目,重新执行qmake再构建;

        第三可能存在代码修改但没有保存,编译也会出错,可以先保存,再编译,或者在pro里面加个空格保存,有时候qt检测到代码没有发生变更,是不会再重新编译的;

        第四可以看一下终端里面的debug输出,那里面会告诉你哪些是有重新编译,哪些是直接跳过;也可以手动删掉,中间文件就在编译的debug目录下;

三:项目中声明了一些变量,指针等但没有实现,或者两者不一致,也可能是在cpp文件中把类的某个函数实现删掉了,但是在对应的头文件中没有删掉该函数的声明。这种情况只需要将相关代码进行修改或删除后就会正常;

本人是通过第三种问题,同时在界面设计的时候,如果更新了控件之类的一定要先保存再编译,不然也有可能引起该问题;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值