【问题标题】:Abnormal program termination on shutdown with TRESTClient使用 TRESTClient 关闭时程序异常终止
【发布时间】:2020-03-26 15:07:53
【问题描述】:

当具有TRESTClient 组件的程序关闭时,将显示“程序异常终止”错误。

最近,我们将一个项目从 C++Builder 2009 升级到了 C++Builder 10.2 Tokyo。之后,我们将新的TRESTClient 添加到我们的项目中。现在,每次我们尝试关闭应用程序时,它都会显示此错误。这意味着可能会调用abort()

我们一直运行调试器直到tWinMain() 函数结束,这表明它发生在返回之后。这表明在应用程序清理期间抛出了异常。在包含的调用堆栈中,它显示Data::Bind::Objectscope::FinalizationUnregisterScope() 从那里被调用。这很可能是引发异常的地方。

这个问题似乎与this forum post 中的问题非常相似。 Remy Lebeau 将此描述为一个错误,如果在取消注册时未找到项目,则会引发异常。

【问题讨论】:

    标签: c++ c++builder-10.2-tokyo


    【解决方案1】:

    从 10.3.2 开始修复: https://stackoverflow.com/a/56195297/6852057

    要在旧版本中修复它:

    问题与两个库的链接顺序有关,即“bindengine.lib”和“bindcomp.lib”。

    当在“bindengine.lib”之前链接“bindcomp.lib”时,您会看到这个问题,并且出于某些令人沮丧的原因,IDE 坚持以错误的顺序放置它们。所以要解决问题。

    1. 关闭在 IDE 中显示问题的项目。
    2. 将项目的 .cbproj 加载到文本编辑器中(提示:不是 IDE)
    3. 搜索“”标签。
    4. 切换两个库“...;bindengine.lib;bindcomp.lib;...”的位置,以便在“bindcomp”之前拥有“bindengine”。
    5. 对任何其他“”重复该过程(因为您可能有多个配置)
    6. 对标签“”重复 3. 到 5.
    7. 保存项目文件。
    8. 在 IDE 中打开它并再次构建或清理并制作项目。以便重新链接 EXE。

    【讨论】:

    • 我们确定这实际上已在 10.3.2 中修复吗?您作为证据链接到上面的答案仅声称它已修复,因为它链接到已在 10.3.2 中关闭的错误报告,但如果您实际阅读票证,则它被关闭为“无法复制”并带有评论“关闭根据到用户的评论”,但没有评论说它实际上是“固定的”。
    • 好问题。我已经能够在 10.2 和 10.3 中重现该错误,但我无法在 10.3.2 中进行测试。然而,这个页面说它已经被修复了:docwiki.embarcadero.com/RADStudio/Rio/en/…,所以我相当肯定它已经被修复了
    猜你喜欢
    • 2011-11-29
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多