【问题标题】:Qt program compiling with MSVC crash on app.exec()使用 MSVC 编译的 Qt 程序在 app.exec() 上崩溃
【发布时间】:2018-12-27 15:18:36
【问题描述】:

我需要将 OpenCV 包含到我的程序中,所以经过很长时间,我放弃在 mingw 上设置它(这对我的程序来说是完全可用的)并安装了 MSVC17 编译器和调试器。但是当我使用 MSVC 运行我的应用程序时,程序会因0x0000005 code, access violation on 0xfffffff 而崩溃。

它总是在 ma​​in.cpp

中的 app.exec() 上崩溃
int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);

    MyClass myClass;
    myClass.getView()->setMinimumWidth(900);
    myClass.getView()->setMinimumHeight(600);
    QQuickWindow *quickWindow = qobject_cast<QQuickWindow *>(myClass.getView());
    quickWindow->setFlags(Qt::FramelessWindowHint);

    //Connecting signal from QML to exit application
    QObject::connect(myClass.getView()->engine(), SIGNAL(quit()), &app, SLOT(quit()));

    quickWindow->show();


    return app.exec(); //Here it crash
}

正如我所说,它完全适用于 mingw(32 位)。

在构建以前由 mingw x32 使用的应用程序时,MSVC2017 x64 会以某种方式崩溃吗?有人知道怎么解决吗?

非常感谢!

//编辑:

不知何故,它适用于发布,但不适用于调试模式。

//编辑:

只有当应用程序显示可见的 QML 对象时才会崩溃

【问题讨论】:

    标签: c++ qt visual-c++ mingw


    【解决方案1】:

    这听起来像是 32 位与 64 位的问题。

    尝试更新项目的依赖项,看看是否可以解决问题,如果指定 CPU 构建,您应该能够将原始源重新构建为 x64,并更新任何 x86 的依赖项。

    或者,在 32 位模式下运行应用程序。

    【讨论】:

      猜你喜欢
      • 2018-06-22
      • 2013-04-23
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      相关资源
      最近更新 更多