Qt 的编译警告 - 仅限 Mac OS X:<class> 已经是 <class> 的朋友

Posted

技术标签:

【中文标题】Qt 的编译警告 - 仅限 Mac OS X:<class> 已经是 <class> 的朋友【英文标题】:Compilation warning with Qt - Mac OS X only: <class> is already a friend of <class> 【发布时间】:2010-08-10 21:14:52 【问题描述】:

我在编译 Qt 项目时收到以下警告,但仅在带有 GCC 的 Mac OS X 上。带有 MinGW 的 Windows 和带有 GCC 的 Linux 不会发出此警告。

/Library/Frameworks/QtCore.framework/Versions/4/Headers/qtextcodec.h:175: warning: 'QCoreXmlStreamWriter' is already a friend of 'QTextEncoder'

为什么会出现这种情况,我该如何摆脱它?我是否以不正确的顺序包含了一些标题或类似的东西?

qtextcodec.h 包含在 QtCore 中,我将其包含在几个头文件中。

如果需要更多信息,请告诉我。

【问题讨论】:

【参考方案1】:

根据 Qt 问题跟踪器。这是一个错误QTBUG-8243,但没有人提供解决方法。也许浏览他们提到的补丁可能会有所启发。

【讨论】:

啊...看起来它将在 4.7 中修复。我没有使用-Werror,所以不用担心。只是有点烦。 :) 感谢您的信息。【参考方案2】:

Qtextcodec.h

friend class QXmlStreamWriter;
friend class QXmlStreamWriterPrivate;
#if defined(Q_OS_MAC32) || defined(Q_OS_AIX)
friend class QCoreXmlStreamWriter;
friend class QCoreXmlStreamWriterPrivate;
#endif

QCoreXmlStreamWriter 似乎只是对 QXmlStreamWriter 的定义(参见 qxmlstream.h),因此它最终将同一类声明为朋友两次。所以不,我认为你对此无能为力,它很可能是一个 Qt buglet。

【讨论】:

以上是关于Qt 的编译警告 - 仅限 Mac OS X:<class> 已经是 <class> 的朋友的主要内容,如果未能解决你的问题,请参考以下文章

Qt 5.4 - Mac OS X 10.6 支持

如何解决Mac版关于python3.5.X的Tcl/Tk 的警告

如何在 Mac OS 的命令行中编译 Qt 代码

在 Mac OS X 上使用 Qwt

Mac OS X 上的 Qt4Dotnet

Mac OS X 上的 Qt 安装问题