> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Aspects de programmation

> Aspects de programmation d’ABBYY FineReader Engine : API COM sous Windows pour C/C++, .NET, Java et les langages de script ; C/C++ et Java sous Linux.

Cette section décrit les principaux aspects de l’utilisation d’ABBYY FineReader Engine dans des applications écrites dans différents langages de programmation et renvoie vers des articles traitant de sujets connexes.

L’interface de programmation d’applications de FRE for Windows est conforme à la norme COM et peut être utilisée en C/C++, .NET, Java ou avec tout outil de développement prenant en charge les composants COM. L’Engine peut également être adapté à une utilisation avec des langages de script comme VBS, JS et Perl.

FRE for Linux peut être utilisé avec les langages C/C++ et Java.

<div id="loading-initialization-and-deinitialization">
  ## Chargement, initialisation et désinitialisation
</div>

<Warning>
  N'initialisez ni ne désinitialisez ABBYY FineReader Engine aux points d'entrée
  d'autres bibliothèques dynamiques, ni dans les constructeurs et destructeurs d'objets statiques
  et globaux implémentés dans des bibliothèques dynamiques, car ceux-ci sont appelés
  aux points d'entrée des bibliothèques dynamiques.
</Warning>

ABBYY FineReader Engine doit être initialisé et désinitialisé ailleurs. Par exemple, dans la fonction main ou WinMain d'un module exécutable.

<Note>
  Sous Windows, cette restriction est due au fait que les fonctions Win32 LoadLibrary et
  FreeLibrary ne sont pas réentrantes.
</Note>

Lors de l'initialisation, ABBYY FineReader Engine rétablit le paramètre LC\_CTYPE à la valeur par défaut du système d'exploitation. Il faut en tenir compte si votre application dépend de services liés aux paramètres régionaux.

<Note>Sous Windows, FRE rétablit le paramètre LC\_CTYPE de msvcrt.dll.</Note>

L'exception "Engine deinitialization failed" peut être levée lors de la désinitialisation de l'objet Engine si tous les objets créés et utilisés par l'application n'ont pas été supprimés avant la désinitialisation de l'objet Engine. Si vous travaillez avec des langages de programmation qui ne disposent pas d'un garbage collection (par exemple, C++), vous devez soit utiliser des classes de pointeurs intelligents (sous Windows, voir les [samples](/fr/fine-reader/engine/guided-tour/samples) en C++ (COM)), soit libérer les objets créés par des méthodes de création lorsqu'ils ne sont plus nécessaires. Si tous les objets ont été supprimés, l'exception peut être due au fonctionnement du garbage collection. Si l'application est développée sous Windows avec Visual Basic .NET, tous les objets ayant la valeur Nothing sont seulement marqués pour suppression, sans être supprimés.

Le moment exact où le garbage collection supprime l'objet n'est pas connu. Par conséquent, les utilisateurs de Linux et de macOS doivent appeler explicitement le garbage collection avant la désinitialisation de l'objet Engine. Les utilisateurs de Windows doivent appeler les méthodes suivantes avant la désinitialisation de l'objet Engine afin que le garbage collection supprime l'objet :

```
GC.Collect()
GC.WaitForPendingFinalizers()
```

Si vous utilisez le journal (il peut être activé avec la méthode [StartLogging](/fr/fine-reader/engine/api-reference/engine-object-iengine-interface/supplementary-methods/startlogging-method) de l’objet Engine), le message "Avertissement : DeinitializeEngine() a détecté des références externes à des objets FREngine. Cela peut indiquer une fuite si une plateforme de programmation sans garbage collection automatique est utilisée." peut également apparaître dans cette situation. Même si vous appelez explicitement le garbage collection (dans FRE pour Windows, il s’agit de GC.Collect), cela ne signifie pas toujours que les objets sont supprimés immédiatement. Lorsque vous travaillez dans des environnements avec garbage collection, vous pouvez ignorer ce message.

Lorsque vous travaillez dans des environnements sans garbage collection (comme C++), cette exception et ce message peuvent indiquer un problème dans votre code source. Certains objets peuvent être gérés incorrectement, ce qui entraîne une fuite de mémoire. Toutefois, après la désinitialisation d’Engine, tous les objets FineReader Engine seront supprimés dans tous les cas. La fuite de mémoire peut donc se produire dans la partie cliente du code, c’est-à-dire si vous créez vos propres wrappers pour les objets FineReader Engine et ne les libérez pas avant la désinitialisation.

Nous vous recommandons d’utiliser la propriété [TotalObjectsCount](/fr/fine-reader/engine/api-reference/engine-object-iengine-interface/properties#totalobjectscount) de l’objet Engine, qui renvoie le nombre d’objets non libérés et peut vous aider à localiser la fuite de mémoire.

<div id="also-in-this-section">
  ## Voir aussi dans cette section
</div>

* [Différentes façons de charger l’objet Engine](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/different-ways-to-load-engine) pour Windows

  Description détaillée du chargement et du déchargement d’ABBYY FineReader Engine.

* [Utilisation d’ABBYY FineReader Engine dans des applications serveur multithread](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/using-in-server-applications) pour Windows

  Particularités de l’utilisation dans les applications serveur.

* [Gestion des erreurs](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/error-handling)

  Informations sur la gestion des erreurs.

* [Gestion des erreurs lors de l’exportation PDF/XPS](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/handling-errors-during-pdfxps-export)

  Décrit comment gérer les erreurs pouvant survenir lors de l’exportation au format PDF/XPS.

* [Utilisation des propriétés](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/working-with-properties)

  Les interfaces des objets ABBYY FineReader Engine comportent diverses propriétés et méthodes. Cet article explique comment les propriétés sont gérées dans différents langages.

* [Utilisation des collections](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/working-with-collections)

  ABBYY FineReader Engine comprend trois grands types de collections. Cette section explique comment les utiliser.

* [Utilisation des objets connectables](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/working-with-connectable-objects)

  Certains objets d’ABBYY FineReader Engine sont ce que l’on appelle des « objets connectables ». Vous trouverez ici des recommandations utiles pour travailler avec ce type d’objets.

* [Utilisation des interfaces COM à partir d’un langage de script](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/using-in-scripting-languages) pour Windows

  Description détaillée de l’utilisation de FineReader Engine dans un langage de script.

* [Utilisation d’ABBYY FineReader Engine en Java](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/using-in-java) pour Linux et Windows

  Description de l’utilisation de FineReader Engine en Java.

* [Développement multiplateforme en Java](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/cross-platform-development-in-java) pour Linux et Windows

  Particularités du développement Java sur toutes les plateformes.

* [Utilisation d’ABBYY FineReader Engine dans .NET Core](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/using-in-net-core) pour Windows

  Description de l’utilisation de FineReader Engine dans .NET Core.

* [Utilisation d’ABBYY FineReader Engine en C (Objective-C)](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/using-in-cobjective-c) pour Windows

  Chargement et déchargement de FineReader Engine en C (Objective-C).

* [Implémentation d’un serveur hors processus](/fr/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/out-of-process-server-implementation) pour Linux

  Description détaillée de l’utilisation d’ABBYY FineReader Engine chargé en tant que serveur hors processus.
