我有一个在调试模式下工作的 Qt 应用程序,没有任何问题。两天以来,我试图让它在发布模式下工作。经过一些项目属性修改后,我设法编译没有错误。但不幸的是,应用程序在到达 main 方法之前就崩溃了。这是我的环境:
- 女士 VS 2010
- Qt 4.8.4
- 质量重量 6.0.0
我不知道这是否相关,但我还为 VS 安装了 Qt 插件并使用 Qt Designer 来创建我的 GUI。
正如我在调试模式下所说,没有问题。从 Visual Studio 启动发行版会产生以下错误:Application.exe 中 0x77c415de 处的未处理异常:0xC0000005:访问冲突读取位置 0x0000000c。
我可以“调试”的最后一个函数是方法“__declspec(noinline) int __tmainCRTStartup”中调用的“WinMain”方法,该方法位于 crtexe.c 中(老实说,我不知道这是什么)。调用堆栈如下所示:
ntdll.dll!77c415de()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!77c415de()
ntdll.dll!77c3014e()
msvcr100.dll!718f0269()
msvcr100.dll!718f233b()
msvcr100.dll!718f233b()
msvcr100.dll!718f233b()
QtCore4.dll!5b2cfc49()
QtGui4.dll!57bf54ea()
Application.exe!__tmainCRTStartup() Line 547 + 0x1c bytes C
kernel32.dll!754633aa()
ntdll.dll!77c59ef2()
ntdll.dll!77c59ec5()
此刻我完全迷失了这个问题。不知道要进一步尝试什么...
我试图减少程序并注释掉完整的主要功能。但结果是相同的行为。正如我所说,错误甚至在调用主函数之前就发生了。我还关闭了所有优化并重新编译......没有改变任何东西。
让我完全困惑的是,当我从命令提示符调用“Application.exe”时它“工作”(好吧,它也崩溃了,但在执行过程中要晚得多)。很奇怪,不是吗?从命令提示符开始和从 Visual Studio 应用程序开始有什么区别?