Bonjour,
Quelle est la différence entre une dll dynamique et une dll statique? (pas du coté code, mais coté notion)
Merci d'avance
Bonjour,
Quelle est la différence entre une dll dynamique et une dll statique? (pas du coté code, mais coté notion)
Merci d'avance
Salut,
A priori, une dll est forcément dynamique alors qu'un librarie est static. En d'autre mot, la dll va partager ses resources entre plusieurs executables et doit donc etre accessible. Alors que la librarie static va etre directement inclu dans l'executable, augmentant donc sa taille mais evitant d'avoir à fournir des fichiers externes.
DLL signifiant Dynamic Link Library, il serait en effet curieux qu'elle soit statique.
J'ajouterai à l'intervention de uriotcea (à qui je rappelle que la traduction de library n'est pas librairie) que les bibliothèques dynamiques ont une extension DLL, et les statiques une extension LIB.
Il y a généralement 3 notions (les noms varient selon les OS et les personnes) :
1 - Bibliothèque statique
2 - Bibliothèque dynamique liées statiquement
3 - Bibliothèque dynamique liée dynamiquement
Sous windows, une DLL répons selon l'utilisation qu'on en fait à 2 ou 3. Pour 2, on utilise soit un fichier d'exports (.def, je crois), soit plus couramment un .lib statique spécial (nommée librairie d'import, tout petit puisque ne contenant pas vraiment de code) qui renvoie vers le .dll, et les .h exposés par le fabriquand de cette dernière.
Dans le cas 2, on a donc dynamisme de la bibliothèque, mais vérification statique des appels faits vers cette bibliothèque (à condition qu'on link avec des .h et .lib correspondant à la version de la DLL qu'on va utiliser).
Dans le cas 3, tout est dynamique, et on découvre au runtime si la bibliothèque contient ou pas telle fonction (LoadLibrary suivi de GetProcAddress).
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager