A partir de quand estimez vous que faire une DLL plutot qu'un LIB soit
intéressant. En effet, utiliser des DLL fait des programmes plus
petits (entre autres) mais induit d'enormes contraintes au niveau de
la programmation. Donc d'apres moi, faire une DLL pour une
bibliotheque de petite taille n'est pas forcement une bonne idee...
A partir de quand estimez vous que faire une DLL plutot qu'un LIB soit
intéressant. En effet, utiliser des DLL fait des programmes plus
petits (entre autres) mais induit d'enormes contraintes au niveau de
la programmation. Donc d'apres moi, faire une DLL pour une
bibliotheque de petite taille n'est pas forcement une bonne idee...
A partir de quand estimez vous que faire une DLL plutot qu'un LIB soit
intéressant. En effet, utiliser des DLL fait des programmes plus
petits (entre autres) mais induit d'enormes contraintes au niveau de
la programmation. Donc d'apres moi, faire une DLL pour une
bibliotheque de petite taille n'est pas forcement une bonne idee...
Bonjour,
A partir de quand estimez vous que faire une DLL plutot qu'un LIB soit
intéressant. En effet, utiliser des DLL fait des programmes plus
petits (entre autres) mais induit d'enormes contraintes au niveau de la
programmation. Donc d'apres moi, faire une DLL pour une bibliotheque de
petite taille n'est pas forcement une bonne idee...
Bonjour,
A partir de quand estimez vous que faire une DLL plutot qu'un LIB soit
intéressant. En effet, utiliser des DLL fait des programmes plus
petits (entre autres) mais induit d'enormes contraintes au niveau de la
programmation. Donc d'apres moi, faire une DLL pour une bibliotheque de
petite taille n'est pas forcement une bonne idee...
Bonjour,
A partir de quand estimez vous que faire une DLL plutot qu'un LIB soit
intéressant. En effet, utiliser des DLL fait des programmes plus
petits (entre autres) mais induit d'enormes contraintes au niveau de la
programmation. Donc d'apres moi, faire une DLL pour une bibliotheque de
petite taille n'est pas forcement une bonne idee...
- Une DLL peut etre chargée dynamiquement par un programme et est
standardisée par le système (alors que les librairies dépendent du langage
utilisé, et ont vocation à etre liées statiquement) .
- Les DLL permettent de scinder un programme en plusieurs parties
indépendantes.
Donc on aura pas besoin de faire de la DLL quand on fait un logiciel
monolithique (qui évidemment n'inclut pas d'architecture plug-in), dont
aucune partie n'est fournit par un tiers, et dont on est certain (dans une
moindre mesure) qu'aucun bout ne devra etre modifié dans le temps
(d'ailleurs pas forcément par l'auteur original). Typiquement on use d' une
DLL quand on pense qu'un bout du soft devra évolué ou pourra etre mod ifié
selon convenance et contraintes des/du client(s)...
- Une DLL peut etre chargée dynamiquement par un programme et est
standardisée par le système (alors que les librairies dépendent du langage
utilisé, et ont vocation à etre liées statiquement) .
- Les DLL permettent de scinder un programme en plusieurs parties
indépendantes.
Donc on aura pas besoin de faire de la DLL quand on fait un logiciel
monolithique (qui évidemment n'inclut pas d'architecture plug-in), dont
aucune partie n'est fournit par un tiers, et dont on est certain (dans une
moindre mesure) qu'aucun bout ne devra etre modifié dans le temps
(d'ailleurs pas forcément par l'auteur original). Typiquement on use d' une
DLL quand on pense qu'un bout du soft devra évolué ou pourra etre mod ifié
selon convenance et contraintes des/du client(s)...
- Une DLL peut etre chargée dynamiquement par un programme et est
standardisée par le système (alors que les librairies dépendent du langage
utilisé, et ont vocation à etre liées statiquement) .
- Les DLL permettent de scinder un programme en plusieurs parties
indépendantes.
Donc on aura pas besoin de faire de la DLL quand on fait un logiciel
monolithique (qui évidemment n'inclut pas d'architecture plug-in), dont
aucune partie n'est fournit par un tiers, et dont on est certain (dans une
moindre mesure) qu'aucun bout ne devra etre modifié dans le temps
(d'ailleurs pas forcément par l'auteur original). Typiquement on use d' une
DLL quand on pense qu'un bout du soft devra évolué ou pourra etre mod ifié
selon convenance et contraintes des/du client(s)...
A partir de quand estimez vous que faire une DLL plutot qu'un
LIB soit intéressant. En effet, utiliser des DLL fait des
programmes plus petits (entre autres) mais induit d'enormes
contraintes au niveau de la programmation. Donc d'apres moi,
faire une DLL pour une bibliotheque de petite taille n'est pas
forcement une bonne idee...
A partir de quand estimez vous que faire une DLL plutot qu'un
LIB soit intéressant. En effet, utiliser des DLL fait des
programmes plus petits (entre autres) mais induit d'enormes
contraintes au niveau de la programmation. Donc d'apres moi,
faire une DLL pour une bibliotheque de petite taille n'est pas
forcement une bonne idee...
A partir de quand estimez vous que faire une DLL plutot qu'un
LIB soit intéressant. En effet, utiliser des DLL fait des
programmes plus petits (entre autres) mais induit d'enormes
contraintes au niveau de la programmation. Donc d'apres moi,
faire une DLL pour une bibliotheque de petite taille n'est pas
forcement une bonne idee...
En dehors du premier cas (qui est assez limité), c'est prèsque
toujours un chargement explicit (dlopen ou LoadLibrary, selon le
système) qu'il faut. C'est très, très rare d'utiliser un
chargement dynamique implicit, sauf que pour la bibliothèque
système (sous Unix) ou la base de données.
En dehors du premier cas (qui est assez limité), c'est prèsque
toujours un chargement explicit (dlopen ou LoadLibrary, selon le
système) qu'il faut. C'est très, très rare d'utiliser un
chargement dynamique implicit, sauf que pour la bibliothèque
système (sous Unix) ou la base de données.
En dehors du premier cas (qui est assez limité), c'est prèsque
toujours un chargement explicit (dlopen ou LoadLibrary, selon le
système) qu'il faut. C'est très, très rare d'utiliser un
chargement dynamique implicit, sauf que pour la bibliothèque
système (sous Unix) ou la base de données.
"kanze" a écrit dans le message de news:
> En dehors du premier cas (qui est assez limité), c'est prèsque
> toujours un chargement explicit (dlopen ou LoadLibrary, selon le
> système) qu'il faut. C'est très, très rare d'utiliser un
> chargement dynamique implicit, sauf que pour la bibliothèque
> système (sous Unix) ou la base de données.
Nous utilisons des DLL (en fait des .so) pour les modules
communs d'applications composées de plusieurs (dizaines) de
processus. Ca n'apporte rien fonctionnellement par rapport à
l'édition de liens statique, mais ça économise
considérablement la mémoire car le code n'est présent qu'une
fois en mémoire.
Par ailleurs, ça permet de livrer les corrections des modules
communs sans que le programme les utilisant n'ait à être
relinké.
"kanze" <kanze@gabi-soft.fr> a écrit dans le message de news:
1157636791.937755.305310@i42g2000cwa.googlegroups.com...
> En dehors du premier cas (qui est assez limité), c'est prèsque
> toujours un chargement explicit (dlopen ou LoadLibrary, selon le
> système) qu'il faut. C'est très, très rare d'utiliser un
> chargement dynamique implicit, sauf que pour la bibliothèque
> système (sous Unix) ou la base de données.
Nous utilisons des DLL (en fait des .so) pour les modules
communs d'applications composées de plusieurs (dizaines) de
processus. Ca n'apporte rien fonctionnellement par rapport à
l'édition de liens statique, mais ça économise
considérablement la mémoire car le code n'est présent qu'une
fois en mémoire.
Par ailleurs, ça permet de livrer les corrections des modules
communs sans que le programme les utilisant n'ait à être
relinké.
"kanze" a écrit dans le message de news:
> En dehors du premier cas (qui est assez limité), c'est prèsque
> toujours un chargement explicit (dlopen ou LoadLibrary, selon le
> système) qu'il faut. C'est très, très rare d'utiliser un
> chargement dynamique implicit, sauf que pour la bibliothèque
> système (sous Unix) ou la base de données.
Nous utilisons des DLL (en fait des .so) pour les modules
communs d'applications composées de plusieurs (dizaines) de
processus. Ca n'apporte rien fonctionnellement par rapport à
l'édition de liens statique, mais ça économise
considérablement la mémoire car le code n'est présent qu'une
fois en mémoire.
Par ailleurs, ça permet de livrer les corrections des modules
communs sans que le programme les utilisant n'ait à être
relinké.
Nous utilisons des DLL (en fait des .so) pour les modules
communs d'applications composées de plusieurs (dizaines) de
processus. Ca n'apporte rien fonctionnellement par rapport à
l'édition de liens statique, mais ça économise
En es-tu certain ? Ce n'est pas ce que j'ai compris jusqu'ici,
et ça ne correspond pas au nom. Au moins sous Windows : je sais
Nous utilisons des DLL (en fait des .so) pour les modules
communs d'applications composées de plusieurs (dizaines) de
processus. Ca n'apporte rien fonctionnellement par rapport à
l'édition de liens statique, mais ça économise
En es-tu certain ? Ce n'est pas ce que j'ai compris jusqu'ici,
et ça ne correspond pas au nom. Au moins sous Windows : je sais
Nous utilisons des DLL (en fait des .so) pour les modules
communs d'applications composées de plusieurs (dizaines) de
processus. Ca n'apporte rien fonctionnellement par rapport à
l'édition de liens statique, mais ça économise
En es-tu certain ? Ce n'est pas ce que j'ai compris jusqu'ici,
et ça ne correspond pas au nom. Au moins sous Windows : je sais
Nous utilisons des DLL (en fait des .so) pour les modules
communs d'applications composées de plusieurs (dizaines) de
processus. Ca n'apporte rien fonctionnellement par rapport à
l'édition de liens statique, mais ça économise
considérablement la mémoire car le code n'est présent qu'une
fois en mémoire.
En es-tu certain ? Ce n'est pas ce que j'ai compris jusqu'ici,
et ça ne correspond pas au nom. Au moins sous Windows : je sais
que la taille était bien la motivation principale des « shared
objects » sous Sun OS, dans le temps, mais je croyais qu'il
s'agissait principalement de la taille sur disque (à une époque
où la taille des disques se mesurait en Mo, et non Go, et que la
taille de la bibliothèque graphique était bien plusieurs Mo).
C'est possible que l'image en mémoire soit partagé ; c'est même
l'idée derrière le PIC (« position independant code », mais ça
augmente aussi la vitesse de chargement de façon notable, même
si l'image n'est pas partagé).
Mais ça suppose aussi que l'objet
partagé ne réfère jamais à rien dans le main,
et que s'il réfère
à quelque chose dans un autre objet partagé (libc, par exemple),
que cet autre objet soit lié à la même adresse dans tous les
exécutables (rélative à l'adresse de mon objet partagé, au
moins).
Par ailleurs, ça permet de livrer les corrections des modules
communs sans que le programme les utilisant n'ait à être
relinké.
C'est justement le gros problème. L'utilisateur finit très vite
avec un melange de versions incompatibles.
Ici, ils avaient fait à peu près pareil, avec l'idée
qu'effectivement, la plupart des bibliothèques servaient à
plusieurs exécutables. Seulement, juste au moment où j'y suis
arrivé, on a eu des crashs en production parce que
$LD_LIBRARY_PATH ne désignait pas le chemin vers la bonne
version de la bibliothèque
-- un peu de récherche a montré
qu'en fait, les versions des exécutables (livrées par des
équipes différentes) étaient telles que chaque exécutable avait
besoin d'une version différente des bibliothèques.
Les bibliothèques étaient donc présentes autant de fois qu'il y
avait d'exécutables, dans de versions différentes. Pas de gain
de place, donc, et une risque réele de chopper la mauvaise
version.
Nous utilisons des DLL (en fait des .so) pour les modules
communs d'applications composées de plusieurs (dizaines) de
processus. Ca n'apporte rien fonctionnellement par rapport à
l'édition de liens statique, mais ça économise
considérablement la mémoire car le code n'est présent qu'une
fois en mémoire.
En es-tu certain ? Ce n'est pas ce que j'ai compris jusqu'ici,
et ça ne correspond pas au nom. Au moins sous Windows : je sais
que la taille était bien la motivation principale des « shared
objects » sous Sun OS, dans le temps, mais je croyais qu'il
s'agissait principalement de la taille sur disque (à une époque
où la taille des disques se mesurait en Mo, et non Go, et que la
taille de la bibliothèque graphique était bien plusieurs Mo).
C'est possible que l'image en mémoire soit partagé ; c'est même
l'idée derrière le PIC (« position independant code », mais ça
augmente aussi la vitesse de chargement de façon notable, même
si l'image n'est pas partagé).
Mais ça suppose aussi que l'objet
partagé ne réfère jamais à rien dans le main,
et que s'il réfère
à quelque chose dans un autre objet partagé (libc, par exemple),
que cet autre objet soit lié à la même adresse dans tous les
exécutables (rélative à l'adresse de mon objet partagé, au
moins).
Par ailleurs, ça permet de livrer les corrections des modules
communs sans que le programme les utilisant n'ait à être
relinké.
C'est justement le gros problème. L'utilisateur finit très vite
avec un melange de versions incompatibles.
Ici, ils avaient fait à peu près pareil, avec l'idée
qu'effectivement, la plupart des bibliothèques servaient à
plusieurs exécutables. Seulement, juste au moment où j'y suis
arrivé, on a eu des crashs en production parce que
$LD_LIBRARY_PATH ne désignait pas le chemin vers la bonne
version de la bibliothèque
-- un peu de récherche a montré
qu'en fait, les versions des exécutables (livrées par des
équipes différentes) étaient telles que chaque exécutable avait
besoin d'une version différente des bibliothèques.
Les bibliothèques étaient donc présentes autant de fois qu'il y
avait d'exécutables, dans de versions différentes. Pas de gain
de place, donc, et une risque réele de chopper la mauvaise
version.
Nous utilisons des DLL (en fait des .so) pour les modules
communs d'applications composées de plusieurs (dizaines) de
processus. Ca n'apporte rien fonctionnellement par rapport à
l'édition de liens statique, mais ça économise
considérablement la mémoire car le code n'est présent qu'une
fois en mémoire.
En es-tu certain ? Ce n'est pas ce que j'ai compris jusqu'ici,
et ça ne correspond pas au nom. Au moins sous Windows : je sais
que la taille était bien la motivation principale des « shared
objects » sous Sun OS, dans le temps, mais je croyais qu'il
s'agissait principalement de la taille sur disque (à une époque
où la taille des disques se mesurait en Mo, et non Go, et que la
taille de la bibliothèque graphique était bien plusieurs Mo).
C'est possible que l'image en mémoire soit partagé ; c'est même
l'idée derrière le PIC (« position independant code », mais ça
augmente aussi la vitesse de chargement de façon notable, même
si l'image n'est pas partagé).
Mais ça suppose aussi que l'objet
partagé ne réfère jamais à rien dans le main,
et que s'il réfère
à quelque chose dans un autre objet partagé (libc, par exemple),
que cet autre objet soit lié à la même adresse dans tous les
exécutables (rélative à l'adresse de mon objet partagé, au
moins).
Par ailleurs, ça permet de livrer les corrections des modules
communs sans que le programme les utilisant n'ait à être
relinké.
C'est justement le gros problème. L'utilisateur finit très vite
avec un melange de versions incompatibles.
Ici, ils avaient fait à peu près pareil, avec l'idée
qu'effectivement, la plupart des bibliothèques servaient à
plusieurs exécutables. Seulement, juste au moment où j'y suis
arrivé, on a eu des crashs en production parce que
$LD_LIBRARY_PATH ne désignait pas le chemin vers la bonne
version de la bibliothèque
-- un peu de récherche a montré
qu'en fait, les versions des exécutables (livrées par des
équipes différentes) étaient telles que chaque exécutable avait
besoin d'une version différente des bibliothèques.
Les bibliothèques étaient donc présentes autant de fois qu'il y
avait d'exécutables, dans de versions différentes. Pas de gain
de place, donc, et une risque réele de chopper la mauvaise
version.
En es-tu certain ?
Ce n'est pas ce que j'ai compris jusqu'ici,
et ça ne correspond pas au nom. Au moins sous Windows
En es-tu certain ?
Ce n'est pas ce que j'ai compris jusqu'ici,
et ça ne correspond pas au nom. Au moins sous Windows
En es-tu certain ?
Ce n'est pas ce que j'ai compris jusqu'ici,
et ça ne correspond pas au nom. Au moins sous Windows