meech
Messages postés209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 août 2007 10 janv. 2005 à 11:44
Salut,
La fonction dlsym est habituellement utilisée sur les Linux/Unix pour appeler une fonction issue d'un objet partagé (un .so), c'est-à-dire, en gros, l'équivalent d'une DLL.
Elle est présente pour des questions de portabilité.
Dans l'hypothèse où tu souhaites développer uniquement pour Win32, le conseil est d'utiliser les outils que fournit Microsoft, donc la seconde fonction. Cette dernière te permet de récupérer l'adresse mémoire d'une fonction contenue dans une DLL, et ainsi de l'appeler.
En espérant t'avoir aidé...
Ciao.
NB. Si tu as besoin d'un exemple de code portable, je suis en mesure d'en fournir un relativement rapidement.
meech
Messages postés209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 août 2007 10 janv. 2005 à 12:21
Ces fonctions ne sont pas implémentées nativement sous Win32. A priori, seul le sous-environnement Cygwin propose cet en-tête de fonctions et sa librairie associée.
Le compilateur de Dev-C++, une version de GCC sous Win32, ne propose pas cet en-tête.
Pour implémenter cet en-tête sous Microsoft Visual C++, il sera nécessaire de coder une p'tite librairie interfaçant les fonctions Windows avec les prototypes fournis par dlfcn.h (ça doit être faisable, mais tu t'en sortiras plus rapidement avec la mise en place de quelques macros...).
meech
Messages postés209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 août 2007 10 janv. 2005 à 16:11
1. Oui, il faut ajouter un /DWIN32 dans la ligne de compilation sous VC++ (mais je crois qu'elle fait partie des options par défaut).
2. En effet, il n'est pas nécessaire de spécifier que la fonction dispose de la faculté d'être exportable sous Linux, d'où l'initialisation de la macro SHARELIB à vide.