Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3340 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [c] dll

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c] dll

n°240981
Nokbilong
unique, comme tout le monde.
Posté le 06-11-2002 à 23:52:37  profilanswer
 

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]
mood
Publicité
Posté le 06-11-2002 à 23:52:37  profilanswer
 

n°241053
theShockWa​ve
I work at a firm named Koslow
Posté le 07-11-2002 à 01:31:20  profilanswer
 

Une DLL sous Unix ! :ouch:
 
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 ... :sarcastic:


---------------
last.fm
n°241083
Nokbilong
unique, comme tout le monde.
Posté le 07-11-2002 à 06:43:44  profilanswer
 

dll pour windows je sousentendais
 
 
y'a quoi comme compilateur ffree qui le fait ?


Message édité par Nokbilong le 07-11-2002 à 06:44:24

---------------
"-Dites 33. -Export!!" [:nokbilong]
n°241084
darkoli
Le Petit Dinosaure Bleu
Posté le 07-11-2002 à 08:35:03  profilanswer
 

theShOcKwAvE a écrit a écrit :

Une DLL sous Unix ! :ouch:
 
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 ... :sarcastic:




Et quelques lignes de codes supplémentaire à ajouter :D
 
Du genre : .h

Code :
  1. /* Fonction exportee par la DLL */
  2. __declspec(dllexport) char* totootototoo(char* demande);


 
.c

Code :
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include ".h"
  4. /* Main de la DLL : inutilise */
  5. BOOL APIENTRY DllMain( HANDLE hModule,
  6.                        DWORD  ul_reason_for_call,
  7.                        LPVOID lpReserved
  8.      )
  9. {
  10.     switch (ul_reason_for_call)
  11. {
  12.  case DLL_PROCESS_ATTACH:
  13.  case DLL_THREAD_ATTACH:
  14.  case DLL_THREAD_DETACH:
  15.  case DLL_PROCESS_DETACH:
  16.   break;
  17.     }
  18.     return TRUE;
  19. }
  20. /******************************************************************************/
  21. /*                                                                            */
  22. /* Fonction d'entree dans la DLL.                                             */
  23. /*                                                                            */
  24. /* ========================================================================== */
  25. /*                                                                            */
  26. /* ?                                                                          */
  27. /*                                                                            */
  28. /* -------------------------------------------------------------------------- */
  29. /*                                                                            */
  30. /* Retourne une chaine de caracteres.                                         */
  31. /*                                                                            */
  32. /******************************************************************************/
  33. __declspec(dllexport) char* totootototoo(char* demande)
  34. {
  35. static char* reponse="Coucou !!!";
  36. fprintf(stdout, "%s.\n", demande==NULL?"'NULL'":demande);
  37. return reponse;
  38. }


Message édité par darkoli le 07-11-2002 à 08:35:59

---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
n°241098
BENB
100% Lux.
Posté le 07-11-2002 à 10:12:33  profilanswer
 

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...

n°241099
lorill
Posté le 07-11-2002 à 10:19:45  profilanswer
 

je peux répondre a "comment charger un .so sous unix" mais c'est pas trop la question  [:sinclaire]

n°241128
darkoli
Le Petit Dinosaure Bleu
Posté le 07-11-2002 à 11:09:42  profilanswer
 

lorill a écrit a écrit :

je peux répondre a "comment charger un .so sous unix" mais c'est pas trop la question  [:sinclaire]  




Moi j'en utilise tout les jours des .so mais je ne sais même pas comment ça fonctionne :D (Je développe en C sous unix mais l'environnement et tout bien comme il faut :D).
Ben si tu pouvias y répondre quand même ?


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
n°241131
lorill
Posté le 07-11-2002 à 11:27:49  profilanswer
 

DarkOli a écrit a écrit :

 
Moi j'en utilise tout les jours des .so mais je ne sais même pas comment ça fonctionne :D (Je développe en C sous unix mais l'environnement et tout bien comme il faut :D).
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

n°241594
Nokbilong
unique, comme tout le monde.
Posté le 08-11-2002 à 00:47:26  profilanswer
 

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 :)


---------------
"-Dites 33. -Export!!" [:nokbilong]
n°241640
darkoli
Le Petit Dinosaure Bleu
Posté le 08-11-2002 à 09:14:57  profilanswer
 

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);) en tant que DLL tournat sous win32, pour etre appellée par des app win32.
 
 
vla :)




Ben il faut faire quelques modification comme indiqué dans mon exemple ... (Enfin ça te donne déjà une piste) :D


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
mood
Publicité
Posté le 08-11-2002 à 09:14:57  profilanswer
 

n°241761
Nokbilong
unique, comme tout le monde.
Posté le 08-11-2002 à 14:19:20  profilanswer
 

DarkOli a écrit a écrit :

 
Ben il faut faire quelques modification comme indiqué dans mon exemple ... (Enfin ça te donne déjà une piste) :D
 




 
ok thx vais voir ca


---------------
"-Dites 33. -Export!!" [:nokbilong]

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [c] dll

 

Sujets relatifs
Plus de sujets relatifs à : [c] dll


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)