dll [c] - C++ - Programmation
Marsh Posté le 07-11-2002 à 06:43:44
dll pour windows je sousentendais
y'a quoi comme compilateur ffree qui le fait ?
Marsh Posté le 07-11-2002 à 08:35:03
theShOcKwAvE a écrit a écrit : Une DLL sous Unix ! ![]() Sous win, faire une DLL se choisit dans les options de compilations ... Je suppose que ca doit être pareil pour l'équivalent sous Unix (Linux ?) ... Mais par contre, ca m'étonnerait que ca s'appelle DLL ... ![]() |
Et quelques lignes de codes supplémentaire à ajouter
Du genre : .h
Code :
|
.c
Code :
|
Marsh Posté le 07-11-2002 à 10:12:33
Il n'y a pas d'equivelent stricte des DLL windows sous UNIX.
Il y a sous unix des shared libraries (.so/.sl) qui ressemblent bcp
les differences :
Il n'y a pas de veritable difference de gestion entre les archaive (.a) et les shared libraries sous UNIX donc pas de notion de fonction importées/exportées... Toutes sont exportées
Il n'y a pas de .a généré en meme temps que le .so/.sl (sous windows un .LIB est génére en meme temps que le .DLL). Un executable qui utilise la lib en chargement implicite met directement le .so/.sl comme un .a.
Il y a l'equivalent du LoadLibrary - GetProcAdress
Lors du Link d'un .so/.sl il n'y a pas de verification des references non resolues, Du coup les .so/.sl qui se referencent l'un l'autre sont bcp plus faciles à faire... Par contre certainent n'apparaissent qu'a l'execution.
Il existe un moyen de configurer le link dynamic :
-immediate : il est fait au chargement
-defeered : il est fait a chaque appel d'une nouvelle fonction
Il est donc possible de faire tourner un Prog avec des references non resolues tant que l'on ne passe pas sur cette reference...
Comment faire une shared Lib: cela depend su systeme :
Linux : mettre -shared sur la ligne de commande du linker.
Sun : mettre -G sur la ligne de commande du linker.
HP-UX : mettre -b sur la ligne de commande du linker.
Seulement cela n'est pas suffisent, il faut aussi que tes objets soient compilées pour (Position independent code)
Liunx gcc : -fpic sur la ligne de compilation.
Sun CC : -Kpic sur la ligne de compilation.
HP-UX Acc : +z sur la ligne de compilation.
Je ne reponds qu'a la question comment faire une DLL sous UNIX...
Marsh Posté le 07-11-2002 à 10:19:45
je peux répondre a "comment charger un .so sous unix" mais c'est pas trop la question
Marsh Posté le 07-11-2002 à 11:09:42
lorill a écrit a écrit : je peux répondre a "comment charger un .so sous unix" mais c'est pas trop la question ![]() |
Moi j'en utilise tout les jours des .so mais je ne sais même pas comment ça fonctionne (Je développe en C sous unix mais l'environnement et tout bien comme il faut
).
Ben si tu pouvias y répondre quand même ?
Marsh Posté le 07-11-2002 à 11:27:49
DarkOli a écrit a écrit : Moi j'en utilise tout les jours des .so mais je ne sais même pas comment ça fonctionne ![]() ![]() Ben si tu pouvias y répondre quand même ? |
ben en fait le loader fait le boulot tout seul, le seul truc que je connais un peu c'est charger dynamiquement. Enfin je sais l'utiliser, je sais pas comment ca marche en interne, cf dlopen
Marsh Posté le 08-11-2002 à 00:47:26
me suis mal exprimé
en gros :
pour le moment je code que sous unix.
j'aimerai compiler une fonction (style char *my_bluhstr(char *str) en tant que DLL tournat sous win32, pour etre appellée par des app win32.
vla
Marsh Posté le 08-11-2002 à 09:14:57
Nokbilong a écrit a écrit : me suis mal exprimé ![]() en gros : pour le moment je code que sous unix. j'aimerai compiler une fonction (style char *my_bluhstr(char *str) ![]() vla ![]() |
Ben il faut faire quelques modification comme indiqué dans mon exemple ... (Enfin ça te donne déjà une piste)
Marsh Posté le 08-11-2002 à 14:19:20
DarkOli a écrit a écrit : Ben il faut faire quelques modification comme indiqué dans mon exemple ... (Enfin ça te donne déjà une piste) ![]() |
ok thx vais voir ca
Marsh Posté le 06-11-2002 à 23:52:37
hello

je code un peu de C sous unix et en fait j'aimerai coder des dll que je pourrai utiliser avec mirc par ex
style tel dll prend en entrée un string et m'en retourne 1
kk1 a des docs la dessus ?
enfin surtout 'comment faire une dll'
---------------
"-Dites 33. -Export!!" [:nokbilong]