
Envoyé par
JolyLoic
Déjà, DLL et .so possèdent des différences conceptuelles majeures :
- Une DLL doit avoir tous ses symboles résolus au moment de la compilation. Ce n'est pas le cas d'un .so qui les résous à l’exécution. La principale implication pour les plugins est qu'une DLL de plug-in ne peut pas utiliser une fonction du programme principal. On se retrouve généralement à mettre en place un triptyque : Le programme principal, une DLL de plug-in, et une DLL qui contient l'ensemble des fonctions partageables du programme principal, utilisée pas les deux premiers éléments.
- Tous les symboles sont exportés par défaut dans un .so (je crois qu'il y a moyen que ce ne soit pas le cas) alors qu'une DLL doit déclarer quel symboles seront exportés. On résout généralement ça par l'intermédiaire d'une #define qui permet à partir d'un même fichier .h de déclarer un symbole comme étant importé d'une autre DLL ou exporté de la DLL courante (ou rien pour les .so)
- Les fonctions à utiliser pour manipuler ces bibliothèques ne sont pas les même (dlopen/LoadLibrary...)
- Je suis certain d'oublier des points
Partager