在构建期间使用 Qt 时出错:C2872:“字节”:不明确的符号 [重复]

Posted

技术标签:

【中文标题】在构建期间使用 Qt 时出错:C2872:“字节”:不明确的符号 [重复]【英文标题】:Error using Qt during build: C2872: 'byte': ambiguous symbol [duplicate] 【发布时间】:2020-03-21 20:37:43 【问题描述】:

我有带有编译器桌面的 Qt Creator x86-windows-msvc2019-pe-64bit,Qt Creator 4.11.1(“基于 Qt 5.14.1 MSVC2017,32 位),于 2020 年 2 月 5 日构建, Boost library 1.72 以及 Microsoft Visual Studio Express 2019。

在 Qt 中构建我的程序期间,我收到此错误:

C2872:“字节”:不明确的符号

其实解决方法写在这个页面上:https://studiofreya.com/2018/01/06/visual-studio-2017-with-cpp17-and-boost/#stdbyte-ambiguous-symbol-and-rpcndr.h 问题是我使用的是 Qt(不是 VS)并且不知道如何关闭这个编译器行为。

你知道如何避免这个错误吗?

我的项目文件的开头是这样的:

QT       += core gui
QT       += charts

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

INCLUDEPATH += "c:/Qt/boost_1_72_0/"

【问题讨论】:

您的代码中是否有类似于using namespace std; 的行?如果是这样,也许看这里:Why is “using namespace std;” considered bad practice? 是的,我有。我将尝试重新编写所有代码并回复您。 我从 .h 头文件中删除了它,现在它可以工作了。非常感谢阿德里安 .-) 【参考方案1】:

按照阿德里安的建议 - Why is “using namespace std;” considered bad practice? - 我删除了

using namespace std;

来自我的类​​的头文件并在需要的地方使用了 std:: 前缀,瞧,错误消失了。

【讨论】:

是的,已更正。

以上是关于在构建期间使用 Qt 时出错:C2872:“字节”:不明确的符号 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用桌面 OpenGL 构建 Qt 时出错

导入 OpenCV python 模块时出错(使用 Qt 和 QtOpenGL 构建时)

QT 中的未知模块:图表 - 为 Android 构建 QGroundControl 时出错

GCP 云功能 - 在构建/部署期间获取存储源时出错

从 ParaView 构建自定义 Qt 应用程序示例时出错

在树莓派的交叉编译 qt 中构建应用程序时出错