x86_64架构下使用QNetworkReply出现Undefined symbols报错求助
故障原因与解决方案
核心错误原因
- 槽函数名称拼写不匹配:报错提示找不到的符号是
checkinapp::myOnFinishedSlot,但你代码中实际定义的槽函数名称是myOnFinishSlot,二者差了后缀ed,Qt元对象系统生成的moc文件记录了connect语句中绑定的函数名,链接阶段找不到对应实现就会触发该错误。 - 信号所属类名拼写错误:connect语句中写的信号归属类为
QNetworkManager,正确的类名是QNetworkAccessManager,该错误会在修正拼写后触发新的编译报错,需要同步修正。
修复步骤
- 保持connect绑定的函数名和实际定义的槽函数名完全一致即可,两种修正方案二选一:
- 方案1:将槽函数定义修改为
void myOnFinishedSlot(QNetworkReply* x) { exit(); } - 方案2:将connect语句中绑定的槽函数修改为
&checkinapp::myOnFinishSlot
- 方案1:将槽函数定义修改为
- 修正connect中的类名错误,最终的connect语句示例:
connect(m_networkManager, &QNetworkAccessManager::finished, this, &checkinapp::myOnFinishSlot);
- 如果修正后仍有报错,执行全量重编译操作:清空所有编译中间文件(含moc_前缀的生成文件、obj文件),重新执行qmake后再编译项目即可。
内容的提问来源于stack exchange,提问作者SilverSerpent03
相关产品推荐
相关产品推荐

