Partager via


Avantages de la liaison dynamique

La liaison dynamique présente les avantages suivants par rapport à la liaison statique :

  • Plusieurs processus qui chargent la même DLL à la même adresse de base partagent une seule copie de la DLL en mémoire physique. Cela permet d’économiser la mémoire système et de réduire l’échange.
  • Lorsque les fonctions d’une DLL changent, les applications qui les utilisent n’ont pas besoin d’être recompilées ou relinkées tant que les arguments de fonction, les conventions appelantes et les valeurs de retour ne changent pas. En revanche, le code objet lié de manière statique nécessite que l’application soit ressociée lorsque les fonctions changent.
  • Une DLL peut fournir une prise en charge après-vente. Par exemple, une DLL de pilote d’affichage peut être modifiée pour prendre en charge un affichage qui n’était pas disponible lors de la livraison initiale de l’application.
  • Les programmes écrits dans différents langages de programmation peuvent appeler la même fonction DLL tant que les programmes suivent la même convention d’appel que celle utilisée par la fonction. La convention d’appel (par exemple, C, Pascal ou appel standard) contrôle l’ordre dans lequel la fonction appelante doit envoyer les arguments à la pile, si la fonction ou la fonction appelante est responsable du nettoyage de la pile et si les arguments sont passés dans des registres. Pour plus d’informations, consultez la documentation fournie avec votre compilateur.

Un inconvénient potentiel de l’utilisation de DLL est que l’application n’est pas autonome ; cela dépend de l’existence d’un module DLL distinct. Le système arrête les processus à l’aide d’une liaison dynamique au moment du chargement s’ils nécessitent une DLL introuvable au démarrage du processus et donne un message d’erreur à l’utilisateur. Dans ce cas, le système ne met pas fin à un processus à l’aide d’une liaison dynamique au moment de l’exécution, mais les fonctions exportées par la DLL manquante ne sont pas disponibles pour le programme.