Qt 项目 C2872 错误,生成的 ui 文件中的符号不​​明确

Posted

技术标签:

【中文标题】Qt 项目 C2872 错误,生成的 ui 文件中的符号不​​明确【英文标题】:Qt project C2872 error, ambiguous symbol in generated ui files 【发布时间】:2016-08-24 11:38:57 【问题描述】:

我正在尝试构建一个 Qt 项目,该项目在其他两台机器上构建时不会出现问题。但是当我尝试构建它时,我会从自动生成的 ui 文件中收到许多类似于以下内容的错误。

C2872 "lambda0" : 模棱两可的符号 ui_GeneratedUi.h 91

我正在使用 VS 平台工具集 100 和 Qt 5.5,它们在其他机器上的配置相同。该错误主要出现在调用 QObject 中的 setObjectName() 方法时。

我阅读了有关错误的 MSDN 页面,但在命名空间中找不到任何重复的类型。

【问题讨论】:

您是否尝试删除所有临时和生成的文件并重新生成它们? @AntonMalyshev 是的,我做到了。但它没有用。 【参考方案1】:

最后我找到了解决方案。显然罪魁祸首是 stdafx.h 预编译的头文件。我尝试了所有其他解决方法,但都没有奏效。

我从项目中删除了 stdafx.h 和 stdafx.cpp,然后将其从项目设置中的预编译头文件中删除。然后我解决了所有手动发生的包含错误。

我仍然不知道为什么 stadfx 这样做,但对我来说问题的解决方案是这样的。

【讨论】:

以上是关于Qt 项目 C2872 错误,生成的 ui 文件中的符号不​​明确的主要内容,如果未能解决你的问题,请参考以下文章

Qt 自动生成的表单提供了错误的源代码文件路径

如何将Qt Designer 产生的*.UI文件转换成QT可以使用的*.H和*.CPP

ui_* 文件不是 QT5.5 生成的

从 .cpp 和 .h 为 Qt Designer 创建 ui 文件

Qt 中自动生成的 UI 标头

QT通过 QT designer 可以生成 ui文件