目录
前言:
昨日还照常跑的程序,今早就输出满屏的报错,这对于一名C++程序猿而言无疑是“黑云压城”,一度以为VS抽风了。其实导致这个报错的原因有多种,当下便记录总述,如何快速定位问题并解决。
1. 报错状况
error MSB4181 “QtRunWork” 任务返回了false,但未记录错误
除上面的明显报错,只要是导入了Qt头文件的位置,编译器都会报错,使我一度以为环境出了问题。
(QtRunWork报错在最顶上,未截图进去 )
2. 定位问题
VS重新生成项目,或运行项目,查看“输出”下的运行日志,解决引起QtRunWork的问题即可(程序结束处报QtRunWork,向上遍历,就近第一次出现 error,invalid等字眼)。
重点就是通过运行日志去定位根本问题。
QtRunWork报错,是一个奇怪的问题,它没有追溯到问题的根本。浏览器一查,许多人遇到了这个坑,且导致QtRunWork报错的原因各有不同,“有.qrc资源文件路径错误的,有QTVS Tools插件自动更新的,有slots下定义变量的,......”。全部审查并尝试都未能解决,而另一个QT项目正常,说明也不是环境的问题。最后通过查看项目运行输出才定位问题所在。
我这里是通过运行项目,查看输出定位到ui文件有问题,单独编译了一遍ui文件,输出也报QtRunWork错误,成功确定问题。查看uic文件下也确定没有生成对应的ui头文件(这里不明白可跳过)。目前推测是设计UI的时候,某个组件的属性改动导致的。
3. 解决问题
我这里将此ui文件,组件清空重新设计便解决了,可正常编译运行。
重点是,通过运行日志定位并解决根本问题,以解决QtRunWork报错及一系列问题。
结语:
对于奇怪的报错,首先查看运行日志。