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;
     ^~~~

问题在于 #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自身定义的冲突。需要从源头修改或规避这个定义来解决。

你可能感兴趣的:(总结记录c++,c++)