Qt程序调试“QWidget : Must construct a Qapplication before a Qwidget"BUG分析

        近日,我在Debug Qt程序时,遇到了如下的运行时错误。经过几番分析,终于解决,现记录下来,并分享给大家。

Qt程序调试“QWidget : Must construct a Qapplication before a Qwidget"BUG分析_第1张图片


一、调试环境

1,开发工具

VS2013+QT5.4插件

2,程序结构

Qt EXE调用QT DLL

3,问题描述

使用F5启动Qt程序,在运行EXE部分时,运行正常,显示EXE中的GUI界面,跳转到DLL时,出现上述错误。


二、问题跟踪

        根据问题的现象,初步怀疑问题出在DLL程序中,故一开始在DLL 的入口处设置断点。

1,程序能够运行到DLL的入口函数,执行前几句代码没问题;

2,执行到“createMainWindow”时,又出现上述错误。

3, 分析错误提示,貌似“在createMainWindow之前没有创建QApplication对象”。

4,查看EXE的代码,发现它已创建QApplication对象,然后在跳转到DLL。故应该不是错误提示中的问题。

5,查看编译选项,发现EXE是在Release模式下编译生成的。

6,试着将EXE换到Debug模式下生成,再运行,问题解决。

你可能感兴趣的:(Qt程序调试“QWidget : Must construct a Qapplication before a Qwidget"BUG分析)