qt - Windows 10 1809 更新后,Qt Creator 不再在应用程序输出窗口中显示控制台输出
问题描述
我正在使用 Qt 5.2.1 和 Qt Creator 4.5.0 在调试中运行应用程序。几个月以来,这一直很好,控制台输出显示在“应用程序输出”窗口中。我今天早上将 1809 更新应用到 Windows,现在我只在输出窗口中看到异常详细信息,没有其他内容。
有趣的是,当我“在终端中运行”时,输出显示在命令窗口中。如果我“运行”(ctrl-R)应用程序,它也会显示出来。当我使用更高版本的 Qt 框架(在我的例子中为 5.12.1)运行应用程序的测试时,它似乎也可以。
有没有其他人经历过这个?我什至不确定从哪里开始解决问题。
编辑:更多信息。我查看了 Qt 5.2.1 源代码,发现如果控制台窗口附加到进程(如您所料,例如,如果您选择了“在终端中运行”选项),qDefaultMessageHandler 不会输出消息。如果我在我的应用程序开始时调用 FreeConsole(),那么输出会像以前一样出现在 Application Output 窗口中。这表明对 Windows 的更新导致将控制台窗口分配给调试进程。
解决方案
这可能是 Qt 5.2 中的一个错误,特别是如果它适用于更高的 Qt 版本。
正确的答案是:升级到更高版本的 Qt。原因是 Qt 5.2 支持在 3 年多前就结束了。
您应该使用当前支持的版本之一:5.9.8、5.12.4 或 5.13.0。
请注意,5.9 和 5.12 是 LTS,但 5.9 支持将于明年结束。因此,如果您不想每 6 个月升级一次,那么 5.12 似乎是最合适的。
编辑
如果您因任何原因无法更新 Qt 的生产版本,您至少可以在您的系统上更新 Qt Creator 并更新您的 Qt 开发版本。
假设您在编写和测试代码时在计算机上使用 Qt 5.9 或 5.12。但是为开发循环的任何其他部分(测试、CI、...)和生产保留 5.2.1。
Qt 提供了很好的跨版本兼容性,如果您编写为 5.2 编译的代码,它将在 x >= 2 的任何 5.x 中编译而无需更改。
推荐阅读
- runtime - 使用 Mule 运行时 4.3.0,我们在部署时面临以下问题,但是在 4.2.2 和 4.3.0-20210119 版本中一切正常
- r - R 函数类似于 lattice:xyplot(),但使用二项式变量作为因变量
- python - python从兄弟文件夹导入和-m标志的含义
- python - Python 错误:意外的表达式语法:将文件复制到文件夹脚本
- r - 使用 Leaflet 中的响应式日期输入创建地图的闪亮应用程序
- api - 是否有推荐的 VueJS 应用程序 API 和 Vuex 设计模式
- ios - iOS 14.4.2 似乎禁用了视频自动播放
- python - 如何将 Django Celery App 从 Elastic Beanstalk Amazon Linux 1 升级到 Amazon Linux 2
- css - 如何将图像设置为 div 容器顶部的背景图像
- go - select 语句在通道中究竟是如何工作的?