如何解决MSVC 2019编译Qt项目时的QRunnable constexpr构造器错误?
解决MSVC2019编译Qt项目时QRunnable构造函数的E2422错误
以下是几个可行的排查和解决方向:
检查MSVC 2019编译器版本
确保你的MSVC 2019安装了v16.11及以后的更新包。早期版本的MSVC 2019对C++17 constexpr构造函数的支持存在兼容性问题,无法正确处理Qt中这类默认生成的constexpr构造函数。打开Visual Studio Installer,选择"修改",在"单个组件"里勾选最新的MSVC v142生成工具更新包。调整项目C++语言标准
在项目属性中,将C语言标准设置为ISO C++17 标准(/std:c++17)或更高版本。部分Qt版本的代码依赖C17特性,若项目仍使用C14标准,会触发这类constexpr相关的编译错误。操作路径:项目属性 -> 配置属性 -> C/C -> 语言 -> C++语言标准。同步Qt VS Tools项目配置
- 打开Qt VS Tools的"Qt Project Settings",确认当前选中的Qt版本是你安装的
_msvc2019_64版本,且Debug/Release配置与项目当前配置一致。 - 点击"Run qmake"重新生成项目makefile,确保Qt的编译配置完全同步到MSVC项目中。
- 打开Qt VS Tools的"Qt Project Settings",确认当前选中的Qt版本是你安装的
临时修改Qt头文件(workaround)
若上述方法无效,可临时修改Qt头文件qrunnable.h中的代码:将constexpr QRunnable() noexcept = default;改为QRunnable() noexcept = default;。注意这是临时解决方法,后续更新Qt版本需重新处理,操作前建议备份原文件。
内容的提问来源于stack exchange,提问作者Ultra_Igor
相关产品推荐
相关产品推荐

