[C++] Différence de codage entre .so(unix/linux) et .dll(win32)

Différence de codage entre .so(unix/linux) et .dll(win32) [C++] - C++ - Programmation

Marsh Posté le 27-08-2002 à 11:15:57    

Quelle sont les diférences fondamentales entre les code d'un DLL et d'un bibliothéque dynamique tyoe linux (ou .so) ??
 
Quel est l'equivalent du Dllmain etc ...?
 
Merci

Reply

Marsh Posté le 27-08-2002 à 11:15:57   

Reply

Marsh Posté le 27-08-2002 à 11:37:04    

Joel F a écrit a écrit :

Quelle sont les diférences fondamentales entre les code d'un DLL et d'un bibliothéque dynamique tyoe linux (ou .so) ??
 
Quel est l'equivalent du Dllmain etc ...?
 
Merci




 
1. Pas de différence de code
2. man dlopen
   -> _init et _fini pour les équivalents de DllMain
 

Reply

Marsh Posté le 27-08-2002 à 11:38:32    

euh tu aurais plus de precision ...
J'essaye de monter un squelette commun au deux ( avec pleins de cochonneries de #define LINUX ) donc voila...

Reply

Marsh Posté le 27-08-2002 à 11:43:10    

Joel F a écrit a écrit :

euh tu aurais plus de precision ...
J'essaye de monter un squelette commun au deux ( avec pleins de cochonneries de #define LINUX ) donc voila...




 
Ben je ne vois pas trop ce que tu veux de plus! Tout a été dit! Sous unix, ya rien à changer dans le code quand on compile. C'est au link que tout se passe.
Il reste donc à connaitre l'existence de _init et _fini. Tu ouvres une fenetre console sous ton unix ou ton linux et tu tapes:
> man dlopen
Tu aurras toutes les infos. Je ne vais pas recopier le man dans ce topic, d'autant qu'il est très compréhensible!

Reply

Marsh Posté le 27-08-2002 à 11:45:39    

ah Ok sorry :)
..
plus tard,  
..
ok le man dlopen c bon j'ai tout ce que je veux :)
 
MErci

Reply

Marsh Posté le 29-08-2002 à 17:25:26    

Dans le principe, il y a quand même une différence.
 
Historiquement, les DLL ont été conçues comme des modules. Ce qui signifie avec une interface publique et une partie privée. D'où la notion de fonction exportée, qui correspond à une fonction publique, i.e. appelable par une autre DLL (ou un programme). Les fonction non exportées sont privées à la DLL et ne sont pas accessibles de l'extérieur de la DLL.
 
D'un autre côté, les librairies partagées sous UNIX, sont historiquement, des extensions des librairies statiques de code (fichiers ".a" ). Or dans ce type de librairies, toutes les fonctions sont accessibles, ou publiques, si vous préférez ; ce qui explique qu'il n'y ait pas la notion de "fonctions exportées", parce que tous les symboles sont "exportés" automatiquement.


Message édité par BifaceMcLeOD le 29-08-2002 à 17:26:17
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed