编程方面
本节将介绍在用不同编程语言编写的应用程序中使用ABBYY FineReader Engine 的主要方面,并提供了相关主题的文献参考。
加载、初始化和取消初始化
禁止在其它 动态库 的入口点和在 动态库 中实现的静态和全局对象的构造函数和析构函数中初始化和取消初始化 ABBYY FineReader Engine,因为它们已在 动态库 入口点被调用。用户应在别处初始化或者取消初始化 ABBYY FineReader Engine,例如,可执行文件 模块的 main 函数。
初始化期间,ABBYY FineReader Engine 将重置 的 LC_CTYPE 设置为操作系统默认值。如果您的应用程序依靠区域设置相关的服务,应该考虑到该情况。
如果在 Engine 对象取消初始化之前没有删除应用程序创建和使用的所有对象,则在 Engine 对象的取消初始化期间会引发“Engine 取消初始化失败”异常。如果您使用没有垃圾回收的编程语言(例如 C++),则必须要么使用智能指针类别,或者在不再需要它们时释放由创建方法创建的对象。如果所有对象都已删除,则异常可能是由垃圾回收器操作引起。具体什么时候垃圾回收器删除对象是未知的。因此,您应该在取消初始化 Engine 对象前显式调用垃圾回收器。
如果您正在使用日志(可以通过 Engine 对象的 StartLogging 方法打开),那么消息"Warning: DeinitializeEngine() 就已经检测到了 FREngine 对象的外部引用。如果使用没有自动垃圾回收的编程平台,则可能表示存在泄露。" 也可能在这种情况下出现。即使您显式调用垃圾回收器,也并不意味着对象总是会被立即删除。如果在有垃圾回收器的环境中工作,您可以忽视该消息。
如果在没有垃圾回收器的环境中工作(比如 C++),这些异常和消息可能表示您的源代码中存在问题。某些对象可能被错误处理,导致内存泄漏。不过,在 Engine 取消初始化后,所有 FineReader Engine 对象无论如何都会被删除,因此内存泄露可能发生在代码的客户端部分,比如,您为 FineReader Engine 对象创建了自己的包装却未在取消初始化前将其释放。
考虑使用 Engine 对象的 TotalObjectsCount 属性,这将返回未释放对象的数量,可以帮助您追踪内存泄露。
本节内容还包括
有关错误处理的信息。
描述如何处理导出为 PDF/XPS 格式期间可能发生的错误。
ABBYY FineReader Engine 对象的接口有多种属性和方法。本文讨论了用不同语言处理属性的方式。
ABBYY FineReader Engine 中有三种主要集合类型。在本节中可参阅如何处理这些集合。
ABBYY FineReader Engine 中的有些对象是所谓的“可连接对象”。您可以在这里找到如何处理此类对象的有用建议。
7/3/2024 8:50:10 AM