QApplication构造函数段错误

Posted

技术标签:

【中文标题】QApplication构造函数段错误【英文标题】:QApplication constructor segfault 【发布时间】:2017-05-22 21:08:28 【问题描述】:

当天早些时候,一切都很好,突然间一切都崩溃了。

#include <QtGui/QApplication>

int main(int argc, char** argv) 
    QApplication app argc, argv;

g++ main.cpp -lQtCore -lQtGui -I/usr/include/qt4 编译,给我一个段错误,我不知道为什么。

我已经对此事进行了一些调查,似乎argcargv 可能有问题,但当天早些时候这根本没有发生。

【问题讨论】:

“但在当天早些时候这并没有发生”然后,当然,您使用git bisect(或您选择的版本控制系统的类似工具)来找出两者之间的变化“当时”和“现在”破坏了构建 - 对吧? 很遗憾,我一整天都没有承诺,所以恐怕我没有那个选项 您发布的(微不足道的)程序中没有任何内容可以解释段错误。 一定你没有向我们展示的东西。 我向上帝发誓,这是重现段错误的最小示例,我发誓。我和你一样迷茫 调试器显示什么?当你闯入 segfault 时会发生什么? 【参考方案1】:

从 Qt4 升级到 Qt5 解决了这个问题。

【讨论】:

如果你能对它在 Qt4 中失败的原因进行补充说明,这将是非常有用的,也是一个很棒的文档。 遗憾的是,我没有任何线索。它开始失败,然后在更新时停止。我很想了解自己。 在运行 Qt4 失败代码时是否安装了 Qt5?也许你在 Qt4 和 Qt5 之间有一个混合链接。 虽然可能,但我对此表示怀疑。我昨天一直在运行 Qt4,然后在晚上 11 点它坏了,我不知道为什么。 @cbuchart 比我想象的还要糟糕,看看this。

以上是关于QApplication构造函数段错误的主要内容,如果未能解决你的问题,请参考以下文章

必须在传递给 C 运行时函数的 QWidget 和无效参数之前构造一个 QApplication

Qt 必须在 QWidget 之前构造 QApplication

为啥这个非常简单的构造函数会导致段错误?

QWidget:在VS Release模式下必须在QPaintDevice之前构造一个QApplication

为啥这段代码试图调用复制构造函数?

学生管理系统(2:添加主界面窗口)