Loading s7crs_l15_dynlib...

enib_small.png S7-CRS L15_DynLib — Bibliothèques dynamiques

Les fichiers servant de support à cette expérimentation seront obtenus par la commande $ cp -r /home/TP/sujets/CRS_L15_DynLib . depuis les salles de Labo de l'ENIB, ou par la commande $ sftp -P 55555 -r votre_identifiant@sftp.enib.fr:/home/TP/sujets/CRS_L15_DynLib . depuis l'extérieur de l'ENIB.

Il s'agit d'un exercice en rapport, d'une part, avec la fabrication et l'utilisation classique d'une bibliothèque dynamique et d'autre part avec l'utilisation de telles bibliothèques comme moyen d'extension dynamique des fonctionnalités d'une application (plugin).

Le programme est volontairement très simple afin de se focaliser sur la découverte des notions sans être distrait par les détails annexes d'une quelconque application particulière.
Il convient de traiter ces exercices tranquillement, en s'interrogeant à chaque fois sur le propos de la fonctionnalité particulière qui est mise en avant.
Il ne sert strictement à rien d'enchaîner les exercices sans les comprendre en se contentant de “ça compile et ça ne plante pas donc j'ai bon, je passe à la suite...”
{1 #build_use } Réalisation et utilisation d'une bibliothèque dynamique
{2 #plugin } Extension d'une application par plugins
{3 #python } Invoquer du code natif depuis Python

Cette découverte de la mise en œuvre des bibliothèques dynamiques visait à présenter la fabrication et l'utilisation classique d'une bibliothèque dynamique ainsi que l'utilisation de telles bibliothèques comme moyen d'extension dynamique des fonctionnalités d'une application (plugin).
Nous avons utilisé un exemple trivial ici, mais le principe reste applicable de manière strictement identique dans un contexte applicatif beaucoup plus élaboré.
L'essentiel du travail de préparation pour une solution à base de plugins repose sur le choix pertinent de l'interface (les fonctions et leurs paramètres) qui devra être commune à chacun d'eux.
Au delà de ça, les détails de réalisation des plugins n'ont aucune limite, si ce ne sont les possibilités d'interaction qu'offre l'application principale (un simple tableau dynamique de réels dans notre exemple trivial).
C'est ce mécanisme (même s'il est encapsulé dans quelques facilités) qu'exploitent les applications (navigateurs par exemple) et langages de plus haut niveau (Python, Tcl, Java, JavaScript, C#...) lorsqu'il est question de leur fournir des modules d'extension qui interagissent avec le système, le matériel ou qui demandent de bonnes performances calculatoires.