【问题标题】:gcc 4.7.2 virtual function buggcc 4.7.2 虚函数错误
【发布时间】:2013-03-24 10:48:13
【问题描述】:

在 gcc 4.7.2 for MinGW 中存在一个已知错误,导致在同一类中涉及虚拟和非虚拟继承的某些情况下将无效的this 指针传递给虚拟函数。详情请见this Bugzilla page

这个 bug 困扰了我,我需要为我正在编写的 Qt 应用程序修复它。 Bugzilla 页面中有一个补丁,但我如何获得包含此补丁的工作版本?据我所知,GNU 下载页面只提供原始的、有缺陷的版本。而且4.7.2之后的gcc的下一个版本是4.8.0,我不能用,因为它会和我的Qt库不兼容。

在应用补丁后,我是否必须从源代码构建 gcc?如果可以的话,我当然想避免这种情况!

【问题讨论】:

  • 修复编译器的替代方法可能是解决代码中的错误(例如,不使用触发错误的功能组合)。不知道你的情况是否可行?
  • 不,恐怕不会。甚至从源代码构建 gcc 也比这更有吸引力:-/
  • 哎哟。我希望你能找到一个简单的解决方案(FWIW,我记得很久以前就构建了gcc,而且相当轻松)。
  • 也许回退到 GCC 4.7.1 并重建 Qt 更好?从我的角度来看,这是您可以做的最简单的事情。重建 Qt 或重建 GCC……你在乎吗?
  • @Haroogan:你可能是对的。但如果我这样做,我会先用 gcc 4.8.0 试试。

标签: c++ gcc g++ mingw


【解决方案1】:

我接受了 Haroogan 的建议(从源代码重建 Qt),但使用的是 GCC 4.8.0 而不是 GCC 4.7.1。有效!至少,我已经用了三天了,还没有出现任何惊喜。唯一的故障是 GCC 4.8.0 中的内在头文件,需要将 this patch 应用于它们。除此之外,一帆风顺(即我只花了两个晚上)。

更新添加:我现在注意到调试器存在一些问题。所以也许我说得太早了!

【讨论】:

    猜你喜欢
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    相关资源
    最近更新 更多