使用 TRESTClient 关闭时程序异常终止
Abnormal program termination on shutdown with TRESTClient
当具有 TRESTClient
个组件的程序关闭时,它将显示 "Abnormal Program Termination" 错误。
最近,我们将一个项目从 C++Builder 2009 升级到了 C++Builder 10.2 Tokyo。之后,我们将新的 TRESTClient
添加到我们的项目中。现在,每次我们尝试关闭应用程序时,它都会显示此错误。这意味着可能进行了 abort()
调用。
我们 运行 调试器一直到 tWinMain()
函数结束,这表明它发生在 return 之后。这表明在应用程序清理期间抛出了异常。在包含的调用堆栈中,它显示从那里调用 Data::Bind::Objectscope::Finalization
和 UnregisterScope()
。这很可能是抛出异常的地方。
这个问题似乎与 this forum post 中的问题非常相似。 Remy Lebeau 将此描述为一个错误,如果在注销时找不到某个项目,则会引发异常。
自 10.3.2 起已修复:
要在旧版本中修复它:
问题与两个库的 link 顺序有关,即 "bindengine.lib" 和 "bindcomp.lib"。
当 "bindcomp.lib" 在 "bindengine.lib" 之前被 link 编辑时,您会看到这个问题,出于某些令人沮丧的原因,IDE 坚持将它们放在错误的顺序中.所以要解决问题。
- 关闭在 IDE 中显示问题的项目。
- 将项目的 .cbproj 加载到文本编辑器中(提示:不是 IDE)
- 搜索“”标签。
- 交换两个库“...;bindengine.lib;bindcomp.lib;...”的位置,使 "bindengine" 在 "bindcomp" 之前。
- 对任何其他“”重复该过程(因为您可能有多个配置)
- 为标签“”重复 3. 到 5.
- 保存项目文件。
- 在 IDE 中打开它并再次构建或清理并制作项目。以便 EXE 得到重新link编辑。
当具有 TRESTClient
个组件的程序关闭时,它将显示 "Abnormal Program Termination" 错误。
最近,我们将一个项目从 C++Builder 2009 升级到了 C++Builder 10.2 Tokyo。之后,我们将新的 TRESTClient
添加到我们的项目中。现在,每次我们尝试关闭应用程序时,它都会显示此错误。这意味着可能进行了 abort()
调用。
我们 运行 调试器一直到 tWinMain()
函数结束,这表明它发生在 return 之后。这表明在应用程序清理期间抛出了异常。在包含的调用堆栈中,它显示从那里调用 Data::Bind::Objectscope::Finalization
和 UnregisterScope()
。这很可能是抛出异常的地方。
这个问题似乎与 this forum post 中的问题非常相似。 Remy Lebeau 将此描述为一个错误,如果在注销时找不到某个项目,则会引发异常。
自 10.3.2 起已修复:
要在旧版本中修复它:
问题与两个库的 link 顺序有关,即 "bindengine.lib" 和 "bindcomp.lib"。
当 "bindcomp.lib" 在 "bindengine.lib" 之前被 link 编辑时,您会看到这个问题,出于某些令人沮丧的原因,IDE 坚持将它们放在错误的顺序中.所以要解决问题。
- 关闭在 IDE 中显示问题的项目。
- 将项目的 .cbproj 加载到文本编辑器中(提示:不是 IDE)
- 搜索“”标签。
- 交换两个库“...;bindengine.lib;bindcomp.lib;...”的位置,使 "bindengine" 在 "bindcomp" 之前。
- 对任何其他“”重复该过程(因为您可能有多个配置)
- 为标签“”重复 3. 到 5.
- 保存项目文件。
- 在 IDE 中打开它并再次构建或清理并制作项目。以便 EXE 得到重新link编辑。