在我的程序中使用QT对象时发生访问冲突

时间:2019-07-18 08:24:02

标签: c++ qt dll static-libraries msvc12

我想将QT 集成到现有的桌面C ++项目中。要求 QT应该使用64位MSVC2013静态构建,并为编译器设置 / MT标志,因此我从源代码构建了 QT5.5.0

集成工作按预期进行,我设法从QtCore.lib测试了一些Qt对象(QFile,QObject)。该应用程序运行似乎没有任何问题,也没有崩溃。但是,程序存在-1073741819错误级别。我连接了调试器,并尝试在Visual Studio中捕获该异常,并且得到了以下信息:

First-chance exception at 0x00007FFAC6E4E1A2 in silversim.exe: 0xC0000005: Access violation executing location 0x00007FFAC6E4E1A2.
Unhandled exception at 0x00007FFAC6E4E1A2 in silversim.exe: 0xC0000005: Access violation executing location 0x00007FFAC6E4E1A2.

我撤消了代码集成,直到在函数中只有一个简单的QObject object;声明为止。通过这个简单的声明,程序存在错误,在不使用Qt对象的情况下,程序正常存在

这是怎么回事?可能是Qt的静态链接?也许是Qt5.5版本中的错误?还是我的程序中尝试在清理过程中以某种方式处理qt .libs的其他内容?

更新

由于IDA反编译器,我设法找出了崩溃的发生位置,但我仍然不知道为什么。它在void __fastcall qt_watch_adopted_thread(HANDLE hObject, struct QThread *)中崩溃。正如我注意到的那样,Qt创建了一些线程,这些线程在程序退出时不会被破坏,并且那些线程尝试访问无效的内存。也许与打开的qt错误有关:https://bugreports.qt.io/browse/QTBUG-40247,但就我而言,我没有加载任何插件。

0 个答案:

没有答案