使用Visual Studio和Qt 5.3创建QML应用程序时退出时崩溃

香橼

我一直在通过qmlRegisterType来处理QML应用程序和扩展,但我偶然发现了一件奇怪的事情:我有2个项目。第一个生成具有自定义QML类型的dll,第二个是一个非常简单的应用程序,如下所示:

main.cpp:

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine(QUrl("qrc:/main.qml"));
    return app.exec();
}

main.qml

import QtQuick 2.3
import QtQuick.Window 2.2
import TestLib 1.0

Window {
    visible: true
    width: 360
    height: 360

    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }

    HelloWorld {
        id: hello
        test: "Foo !!"
    }

    Text {
        anchors.centerIn: parent
        text: hello.test
        font.pointSize: 40
    }
}

当我通过Qt Creator运行项目时,一切正常,当我单击窗口中的任何位置时,它都将正确关闭。

但是现在,如果我尝试通过Visual Studio项目编译完全相同的代码(我使用Premake的特殊版本来生成Visual Studio解决方案和可正确处理Qt特殊文件的项目文件),则所有内容都会编译,运行良好,但是单击窗口后,我的以下调用堆栈崩溃:

ntdll.dll!RtlFreeHeap() Unknown
kernel32.dll!HeapFree() Unknown
msvcr120.dll!free(void * pBlock) Line 51    C
TestLib.dll!000007fef7bb6d6c()  Unknown
Qt5Cored.dll!QObjectPrivate::deleteChildren() Line 1936 C++
Qt5Cored.dll!QObject::~QObject() Line 1030  C++
Qt5Quickd.dll!QQuickItem::~QQuickItem() Line 2120   C++
Qt5Quickd.dll!QQuickRootItem::~QQuickRootItem() C++
Qt5Quickd.dll!QQuickRootItem::`scalar deleting destructor'(unsigned int)    C++
Qt5Quickd.dll!QQuickWindow::~QQuickWindow() Line 1102   C++
Qt5Quickd.dll!QQuickWindowQmlImpl::~QQuickWindowQmlImpl()   C++
Qt5Quickd.dll!QQmlPrivate::QQmlElement<QQuickWindowQmlImpl>::~QQmlElement<QQuickWindowQmlImpl>() Line 106   C++
Qt5Quickd.dll!QQmlPrivate::QQmlElement<QQuickWindowQmlImpl>::`scalar deleting destructor'(unsigned int) C++
Qt5Qmld.dll!qDeleteAll<QList<QObject * __ptr64>::const_iterator>(QList<QObject *>::const_iterator begin, QList<QObject *>::const_iterator end) Line 323 C++
Qt5Qmld.dll!qDeleteAll<QList<QObject * __ptr64> >(const QList<QObject *> & c) Line 332  C++
Qt5Qmld.dll!QQmlApplicationEnginePrivate::cleanUp() Line 64 C++
Qt5Qmld.dll!QQmlApplicationEngine::~QQmlApplicationEngine() Line 241    C++
TestApp.exe!000000013faf2630()  Unknown
TestApp.exe!000000013faf4197()  Unknown

我花了很多时间浏览Google等,但是找不到任何有用的信息。我认为可能是我的项目中缺少一些编译选项,Qt Creator自动添加了该选项,但我不知道哪个:/

我知道仅仅关注这个问题可能不足以找到解决方案,因此我准备了一个小型项目,可以完美地再现问题。如果您愿意尝试,请随时给我发消息,然后我会发送给您(很遗憾,我没有任何保管箱帐户或类似帐户)

在此先感谢您的帮助!

德雷舍姆

您在调试应用程序和调试Qt dll中至少使用了版本CRT msvcr120.dll。在同一应用程序中混合使用Debug和Release是不安全的,因为这会创建多个1个独立的堆。如果在释放堆中分配内存,则无法在调试堆中释放内存,反之亦然,因为这样做会破坏堆。同样,堆损坏并不一定会导致下一次分配/释放时立即崩溃,因此变得难以调试。您发现使用正确的CRT可以解决此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以使用Visual Studio在HTML5中创建Android应用程序吗?

来自分类Dev

是否在WebSite项目中使用grunt和bower进行HTML5开发,还是在Visual Studio 2015中创建HTML5 Web应用程序?

来自分类Dev

当我尝试创建/打开多设备混合应用程序应用程序时,为什么Visual Studio 2013崩溃?

来自分类Dev

无法在Windows XP中使用QT5和VS2013创建的运行应用程序

来自分类Dev

使用SDL 2运行应用程序时Xcode 5崩溃

来自分类Dev

使用Visual Studio 2015的Xamarin iOS工作应用无法在iPhone 4和5上启动

来自分类Dev

在Visual Studio中将extjs 5应用程序构建与sencha cmd和WebAPI集成

来自分类Dev

如何在MVC 5(Visual Studio 2013)中创建Android应用程序?

来自分类Dev

如何在Visual Studio Qt中为Qt 5创建DLL项目

来自分类Dev

在Visual Studio中使用c ++创建Windows窗体应用程序时的最佳线程化方法是什么?

来自分类Dev

使用 Visual Studio 创建 Windows 8.1 商店应用程序

来自分类Dev

使用 angular 5 创建渐进式 Web 应用程序时出错

来自分类Dev

使用ADFS本地组织身份验证和Visual Studio 2013 localhost开发的MVC5 Web应用

来自分类Dev

在QtQuick 2应用程序中使用某些Qt5类时出现分段错误

来自分类Dev

部署Qt5 QML应用程序

来自分类Dev

使用QtCreator和qt5安装Qt3D时出错

来自分类Dev

使用QtCreator和qt5安装Qt3D时出错

来自分类Dev

在Visual Studio 2015中使用HTML5,CSS3和剃须刀的一些警告

来自分类Dev

循环冻结表单应用程序时使用Visual Studio C#

来自分类Dev

仅在“发行和分发”配置中使用多设备混合应用程序构建Visual Studio Cordova应用程序时发生错误

来自分类Dev

仅在“发行和分发”配置中使用多设备混合应用程序构建Visual Studio Cordova应用程序时发生错误

来自分类Dev

如何在Visual Studio Community 2013中创建ASP.NET MVC 5 Web应用程序?

来自分类Dev

在Visual Studio中运行Cordova应用程序时出错

来自分类Dev

尝试将Cordova应用程序与商店关联时Visual Studio崩溃

来自分类Dev

使用“ Visual Studio安装程序”创建的安装程序安装后,无法打开应用程序

来自分类Dev

使用 MangoDB 在 ionic3 和 Angular5 Web 应用程序之间同步数据

来自分类Dev

使用片段和Microsoft API创建翻译器应用程序时的异步问题

来自分类Dev

Qt多头控制台应用程序在退出时挂起(使用ctrl-c)

来自分类Dev

控制台应用程序完成退出(Visual Studio)

Related 相关文章

  1. 1

    我可以使用Visual Studio在HTML5中创建Android应用程序吗?

  2. 2

    是否在WebSite项目中使用grunt和bower进行HTML5开发,还是在Visual Studio 2015中创建HTML5 Web应用程序?

  3. 3

    当我尝试创建/打开多设备混合应用程序应用程序时,为什么Visual Studio 2013崩溃?

  4. 4

    无法在Windows XP中使用QT5和VS2013创建的运行应用程序

  5. 5

    使用SDL 2运行应用程序时Xcode 5崩溃

  6. 6

    使用Visual Studio 2015的Xamarin iOS工作应用无法在iPhone 4和5上启动

  7. 7

    在Visual Studio中将extjs 5应用程序构建与sencha cmd和WebAPI集成

  8. 8

    如何在MVC 5(Visual Studio 2013)中创建Android应用程序?

  9. 9

    如何在Visual Studio Qt中为Qt 5创建DLL项目

  10. 10

    在Visual Studio中使用c ++创建Windows窗体应用程序时的最佳线程化方法是什么?

  11. 11

    使用 Visual Studio 创建 Windows 8.1 商店应用程序

  12. 12

    使用 angular 5 创建渐进式 Web 应用程序时出错

  13. 13

    使用ADFS本地组织身份验证和Visual Studio 2013 localhost开发的MVC5 Web应用

  14. 14

    在QtQuick 2应用程序中使用某些Qt5类时出现分段错误

  15. 15

    部署Qt5 QML应用程序

  16. 16

    使用QtCreator和qt5安装Qt3D时出错

  17. 17

    使用QtCreator和qt5安装Qt3D时出错

  18. 18

    在Visual Studio 2015中使用HTML5,CSS3和剃须刀的一些警告

  19. 19

    循环冻结表单应用程序时使用Visual Studio C#

  20. 20

    仅在“发行和分发”配置中使用多设备混合应用程序构建Visual Studio Cordova应用程序时发生错误

  21. 21

    仅在“发行和分发”配置中使用多设备混合应用程序构建Visual Studio Cordova应用程序时发生错误

  22. 22

    如何在Visual Studio Community 2013中创建ASP.NET MVC 5 Web应用程序?

  23. 23

    在Visual Studio中运行Cordova应用程序时出错

  24. 24

    尝试将Cordova应用程序与商店关联时Visual Studio崩溃

  25. 25

    使用“ Visual Studio安装程序”创建的安装程序安装后,无法打开应用程序

  26. 26

    使用 MangoDB 在 ionic3 和 Angular5 Web 应用程序之间同步数据

  27. 27

    使用片段和Microsoft API创建翻译器应用程序时的异步问题

  28. 28

    Qt多头控制台应用程序在退出时挂起(使用ctrl-c)

  29. 29

    控制台应用程序完成退出(Visual Studio)

热门标签

归档