1

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

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

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

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

4

1 回答 1

3

从 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就会重新链接。
于 2020-03-26T15:07:53.683 回答