【问题标题】:QT Windows Desktop GUI program crashes in Release mode but does not crash in Debug modeQT Windows 桌面 GUI 程序在发布模式下崩溃,但在调试模式下不崩溃
【发布时间】:2015-03-11 13:51:03
【问题描述】:

我有一个奇怪的问题,在 Windows 上运行我的 GUI 应用程序的发布版本在启动时崩溃并打印出以下(删节)输出:

Starting C:........\build-WindowsUI-Desktop_Qt_5_4_0_MSVC2010_OpenGL_32bit-Release\release\WindowsUI.exe...
The program has unexpectedly finished.
C:.............\build-WindowsUI-Desktop_Qt_5_4_0_MSVC2010_OpenGL_32bit-Release\release\WindowsUI.exe crashed

没有提供其他信息。编译器输出似乎正常,并且没有打印崩溃详细信息。当我运行调试版本时:一切都很好。 GUI运行正常,没有遇到任何问题。

以前有没有人遇到过这样的事情?我被困在这里了。

【问题讨论】:

  • 您是否尝试在切换到发布模式后进行干净的构建?
  • 通常情况下,程序在发布时崩溃但未调试是由于未初始化的变量。调试版本可以将这些变量的内存设置为零,而发布版本则不会。
  • 并确保不要混合调试和发布版本的 DLL! OpenCV 有一个众所周知的错误,如果链接到调试 dll,会导致发布版本崩溃。

标签: windows qt user-interface release


【解决方案1】:

谢谢你Mailerdaimon!

我查看了我的 QT 项目文件。在我的 .pro 文件中,我告诉链接器将特定的 dll 用于发布和调试模式。根据您的想法,我尝试根据输出的可执行文件类型注释掉指定 dll 的部分:

#win32|win64:debug {
# need to link DLL versions of library for Debug
#LIBS += -L"../ThirdParty/thirdPartyDlls" \
#
#         -lthirdPartyD
#
#}

#win32|win64:release {
# need to link DLL versions of  library for release
LIBS += -L"../ThirdParty/thirdPartyDlls" \

         -lthirdParty

#}

现在发布模式有效!我想我在 .pro 文件中使用了错误的语法,或者可能是 Qt Creator 中的错误。无论哪种方式,我现在都可以正常工作:)。再次感谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2019-09-11
    • 1970-01-01
    相关资源
    最近更新 更多