首页 > 解决方案 > 使用 MSVC 编译的 Qt 程序在 app.exec() 上崩溃

问题描述

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

它总是app.exec()main.cpp中崩溃

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 位)。

MSVC2017 x64 在构建以前由 mingw x32 使用的应用程序时会以某种方式崩溃吗?有谁知道如何解决它?

非常感谢!

//编辑:

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

//编辑:

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

标签: c++qtvisual-c++mingw

解决方案


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

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

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


推荐阅读