• error: reference to ‘byte‘ is ambiguous使用QtCharts报的错误


    E:\app\QT\Tools\mingw810_64\x86_64-w64-mingw32\include\oaidl.h:465: error: reference to 'byte' is ambiguous
    In file included from E:/app/QT/Tools/mingw810_64/x86_64-w64-mingw32/include/msxml.h:24,
                     from E:/app/QT/Tools/mingw810_64/x86_64-w64-mingw32/include/urlmon.h:290,
                     from E:/app/QT/Tools/mingw810_64/x86_64-w64-mingw32/include/objbase.h:163,
                     from E:/app/QT/Tools/mingw810_64/x86_64-w64-mingw32/include/ole2.h:17,
                     from E:/app/QT/Tools/mingw810_64/x86_64-w64-mingw32/include/wtypes.h:12,
                     from E:/app/QT/Tools/mingw810_64/x86_64-w64-mingw32/include/winscard.h:10,
                     from E:/app/QT/Tools/mingw810_64/x86_64-w64-mingw32/include/windows.h:97,
                     from E:/app/QT/5.15.2/mingw81_64/include/QtCore/qt_windows.h:64,
                     from E:/app/QT/5.15.2/mingw81_64/include/QtGui/qopengl.h:49,
                     from E:/app/QT/5.15.2/mingw81_64/include/QtGui/QtGui:47,
                     from E:/app/QT/5.15.2/mingw81_64/include/QtCharts/QtChartsDepends:4,
                     from E:/app/QT/5.15.2/mingw81_64/include/QtCharts/QtCharts:3,
                     from ..\shiyouT\src/testExample/testQChart.h:4,
                     from ..\shiyouT\mainwindow.cpp:5:
    E:/app/QT/Tools/mingw810_64/x86_64-w64-mingw32/include/oaidl.h:465:5: error: reference to 'byte' is ambiguous
         byte *pRecord;
         ^~~~
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    问题在于 #include

    chat分析:
    是的,由于Qt和Windows头文件中都定义了字节类型别名byte,当同时包含这两个头文件时就会产生冲突和歧义错误。

    既然只包含QtCharts头文件就报错了,说明这里QtCharts内部也使用到了Windows头文件。

    一些解决方法:

    1. 尝试不使用QtCharts中的字节类型,使用更具体的类型如unsigned char等。

    2. 查看QtCharts源代码,是否可以修改内部使用Windows头文件,换成Qt自带类型。

    3. 在包含QtCharts前使用命名空间限定如::byte来区分。

    4. 最后不得已可以定义QtCharts自己的字节类型别名,避免与Windows冲突。

    5. 试试更高版本的Qt,是否这个问题已经被修复。

    6. 联系Qt开发者查询这个问题,看是否有现成解决方案。

    7. 最后不行就只能避免使用QtCharts了。

    总之,问题的根本原因是QtCharts内部使用Windows头文件定义的字节类型,产生与Windows自身定义的冲突。需要从源头修改或规避这个定义来解决。

  • 相关阅读:
    无人机编队通信网络搭建
    数理统计笔记1:常用分布
    大型语言模型的语义搜索(二):文本嵌入(Text Embeddings)
    Unity笔记(4):控制角色移动
    【Vue】组件之间的方法调用
    LGBM 模型保存为PMML 文件
    Wayland:推动Linux桌面进入下一代图形显示时代
    Android Jetpack系列(二): Lifecycle(使用篇)
    为什么HashMap头插法会造成死循环?
    PopupWindow第一次弹出的位置和第二次不一致
  • 原文地址:https://blog.csdn.net/m0_46499080/article/details/133280915