【问题标题】:Possible problems when integrating MSCV in Qt Creator?在 Qt Creator 中集成 MSCV 时可能出现的问题?
【发布时间】:2025-09-08 06:35:02
【问题描述】:

我正在使用 MSVC2017 32 位编译器在 Qt Creator 中编译我的 Qt 项目。它可以无错误地编译和运行,但某些功能不再起作用。 (我将它与 MinGW 编译器进行比较。)

由于项目很大而且我没有收到任何错误消息(和the debugger is not working),因此很难缩小问题的范围。所以想笼统的问一句:在Qt Creator中切换到MSVC可能会出现什么问题? (在解决了所有配置问题等之后)一些 Qt 类停止工作了吗?某些信号会停止发出吗?您之前遇到过哪些问题,您是如何解决的?

删除构建文件、清理、运行 qmake、重建不会改变任何东西。

【问题讨论】:

  • 究竟什么功能不起作用?

标签: windows qt visual-c++ qt-creator


【解决方案1】:

Qt Creator 没有任何问题,因为 Qt Creator 是一个 IDE,与构建产品是否工作几乎没有关系。 MSVC 2017 是一个受支持的 Qt 平台,所以在这方面你应该没问题。那么,您可能想问,与 mingw 相比,MSVC 2017 是否增加了任何问题。以我的经验,它曾经是相反的:与 MSVC 相比,mingw 通常会添加问题,与它永远滞后的平台标头有关。这些天来,我希望两者应该持平。

构建分两个阶段完成:qmake(或cmake),然后是make。 Qt Creator 仅运行这两个,环境设置为好像首先调用了vcvars。通过调用vcvarsallqmake(或cmake),然后调用nmake(或jomninja,视情况而定),您将从命令行获得相同的构建。

某些功能不再起作用”并没有真正的帮助:请修改问题以准确解释什么不起作用。理想情况下,展示一些重现问题的测试用例。很有可能您有一些未定义的行为,这些行为在 gnu 编译器中没有出现,但在 MSVC 中出现了。如果大型项目的开发没有良好的测试覆盖率和静态分析,这在大型项目中并不少见。

【讨论】:

  • 是的,我犯了一些旧编译器没有发现的错误!
  • 顺便说一句:发现标准不需要它发现的错误不是编译器的工作。这就是软件工程测试和规范方法的目的:避免错误的最佳方法是通过设计,即构建软件时,尽管存在人为错误,但错误不太可能或不可能发生。
  • 是的,有道理。但是你必须从某个地方开始,当然一开始它并不完美..
  • 当然!我只是指出,发现错误的一种方法是使(某些)错误成为不可能的设计——这是一种经常被遗忘的方法。现代 C++ 允许在核心的低级类集之外编写代码,大多数错误都无法编译。例如,与 20 年前相比,这是一个重大飞跃。