【问题标题】:Exception handling does not work correctly, OnExceptionInMainLoop is not called异常处理无法正常工作,没有调用 OnExceptionInMainLoop
【发布时间】:2013-10-10 15:24:19
【问题描述】:

我使用当前版本的 mingw/msys (gcc 4.8.1) 更新了构建 wxWidgets2.8.12 的环境

我使用 configure 脚本来构建 wx-widgets:

./configure --prefix=/wx  --with-opengl --enable-debug --enable-debug_gdb --enable-unicode

我的应用程序依赖于在wxApp 的子类中使用wxApp::OnExceptionInMainLoop 处理一些异常。 使用 mingw gcc 3.4.5 和 wxWidgets2.8.7(由 wxPack 预构建)可以正常工作

使用新构建的 wxWidgets 库,每当抛出异常但未直接捕获时,程序会显示“Microsoft Visual C++ 运行时库”窗口并以代码 3 退出

wxWidgets 2.8.12 (wxWidgets-2.8.12\samples\except) 提供的 except 示例显示了相同的错误行为

我尝试了不同版本的 wxWidgets(静态、发布、单体),结果都一样。

mingw 中的基本跨库异常支持似乎没问题,我使用这个简短的测试验证了这一点 test

如果有任何有用的提示,我将不胜感激, 或者即使有人可以验证我的问题(只需在您的安装中构建“例外”示例,然后选择Throw unhandled exception

【问题讨论】:

  • 顺便说一句。这不是我第一次尝试解决这个问题,我前段时间在wx论坛发帖,遗憾的是没有得到任何回复:forums.wxwidgets.org/…

标签: mingw wxwidgets


【解决方案1】:

您需要使用 SJLJ(而不是 Dwarf)版本的编译器才能使异常从 Windows 消息处理程序正确传播,所以我认为您的问题仅仅是由于使用了错误的版本。

【讨论】:

  • 谢谢!我使用了mingwbuilds 提供的 mingw-gcc 4.8.1 的 sjlj 版本,现在一切正常。
猜你喜欢
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 2016-08-21
  • 2014-10-23
  • 2019-10-19
  • 1970-01-01
  • 2013-07-19
  • 1970-01-01
相关资源
最近更新 更多