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

  FORUM HardWare.fr
  Programmation

  [C++] Dll, comment ça marche ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Dll, comment ça marche ?

n°17173
Bruce
Music 4 your ears!
Posté le 06-03-2001 à 03:29:13  profilanswer
 

Voilà, j'aimerai utiliser une DLL dans mon programme. Mais voilà la doc de Borland C++ builder 4.0 est pour une fois très obscure à ce sujet ! Je ne connais rien au Win32 (malheureusement !) et je patauge...
Alors voilà, ma DLL se nomme vStrip_css.dll, je l'ai placée dans le même répertoire que mon projet (ou est mon exécutable quoi). J'ai pigé qu'il faut utiliser LoadLibrary() puis GetProcAddress() mais là cela deviens obscur pour moi ! Comment faire ??? Une bonne âme pour m'indiquer la méthode (ou une page web qui explique ça...).
De plus, comment savoir le type de variable retourné par ma DLL et les fonctions de celle-ci ??? J'ai bien le source mais j'y pige rien... :(
 
Merci d'avance.


---------------
A+++ Bruce - http://www.bheller.com
mood
Publicité
Posté le 06-03-2001 à 03:29:13  profilanswer
 

n°17188
seblamb
Posté le 06-03-2001 à 10:33:27  profilanswer
 

Pour utliser une dll tu doit avoir un header (.h) en C qui te donne le nom des fonctions et les type retourné et attendus.
 
Sinon il existe des programmes qui te donne le nom des fonctions d'une dll mais sans les type des variables.

n°17190
WiseTechi
Posté le 06-03-2001 à 10:43:18  profilanswer
 

Salut !
 
Je sais que sous VC++ tu peux faire qqch du genre
#import "ma_dll.dll"
et que ça te génère ensuite un fichier où tu as les prototype des fonctions de la dll...
Par contre, je ne sais pas si ça marche avec Borland ?
 
A++

 

--Message édité par Wisetechi--

n°17192
seblamb
Posté le 06-03-2001 à 10:47:12  profilanswer
 

#import "ma_dll.dll"  ne marche que pour les dll qui contiennent des ActiveX.

n°17194
WiseTechi
Posté le 06-03-2001 à 10:57:21  profilanswer
 

Arg, zut, je me disais bien aussi....
 
A++

n°17195
SoWhatIn22
Posté le 06-03-2001 à 10:57:41  profilanswer
 

hello,
 
Alors sous Builder, pour utiliser les fonctions d'une Dll , il faut passer par des pointeurs de fonction (obligatoire pour les dll fabriquées avec fenetre visual xx car kro$ ne respecte pas le format qu'il a imposé... hum... sans commentaires).
 
tu fais comme ça:
 
HINSTANCE Hdll =LoadLibrary(nomdelalaibairie);
 
pFonction =  
(FARPROC) pFonction = GetProcAddress(Hdll,"nom de la fonction" );
 
ensuite, tu peux utiliser ta fonction:
int ret = pFonction( toto1, toto2);
 
voili ;)
 
Par contre, truc a savoir parce que je me suis pris la tête la dessus pour trouver:
 
Micro$ utilise des appels pascal pour les fonctions C et C++. Donc si la dll a été faite avec Micro$, attention au format de ta fonction!
C'est ce qui m'est arrivé, et pour contourner le truc, j'ai déclaré mon pointeur sur fonction comme ça:
 
int pascal pFonction (int toto1, int toto2);
 
voili. J'espere que tu t'en sortiras avec ça.

n°17198
seblamb
Posté le 06-03-2001 à 11:03:32  profilanswer
 

On est pas obligé, il y a un utilitaire (coff2omf.exe) dans le rep "bin" des Borland C++. Il crée des .lib au format Borland à partir des .lib Microsoft de Visual.

n°17203
Toxin
Carpe ★★ Vitam
Posté le 06-03-2001 à 11:19:25  profilanswer
 

Je suis preneur pour ma culture aussi :)


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
n°17205
WiseTechi
Posté le 06-03-2001 à 11:26:40  profilanswer
 

Visiblement les fonctions exportées de cette dll sont :
const char *vs_get_time(const double time);
 
t_vs_errorcode vs_init(tp_vs_data vsd, t_vs_streamflags streams[256], t_vs_streamflags substreams[256]);
 
t_vs_errorcode vs_strip_one_block(tp_vs_data vsd, t_vs_streamflags streams[256], t_vs_streamflags substreams[256], dword num_idl, tp_vs_vobcellid idl);
 
t_vs_errorcode vs_strip(tp_vs_data vsd, t_vs_streamflags streams[256], t_vs_streamflags substreams[256], dword num_idl, tp_vs_vobcellid idl);
 
t_vs_errorcode vs_done(tp_vs_data vsd, t_vs_streamflags streams[256], t_vs_streamflags substreams[256]);
 
ifo_t *ifoOpen(const char *name);
 
bool ifoClose (ifo_t *ifo);
 
int ifoGetNumPGCI(const ifo_t *ifo);
 
int ifoGetPGCIInfo(const ifo_t *ifo, const dword title, byte time_out[4]);
 
bool ifoGetPGCICells(const ifo_t *ifo, const dword title, tp_vs_vobcellid cells);
 
Mais je suppose que je ne t'apprends pas grand chose puisque tu as les sources....
 
A++

n°17222
freewol
Ceci n'est pas une citation
Posté le 06-03-2001 à 13:08:43  profilanswer
 

Ben moi je suis sous VC++, et j'y connaissais rien avant, alors j'ai créé un projet DLL avec l'option qui fait qu'il y a déjà plein de choses écrites dans ton projet, et j'ai repris la même chose dans mon projet, ça fonctionne au poil ...

mood
Publicité
Posté le 06-03-2001 à 13:08:43  profilanswer
 

n°17226
Bruce
Music 4 your ears!
Posté le 06-03-2001 à 13:19:56  profilanswer
 

Je m'attendais pas à tant de réponses ;)
Merci à tous ! Je vais expérimenter ça ;)
 
Wisetechi : en effet j'ai les sources mais c sympa d'avoir résumé le truc ;)


---------------
A+++ Bruce - http://www.bheller.com

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

  [C++] Dll, comment ça marche ?

 

Sujets relatifs
[serveur web] comment ca marche ?{ASP} recherche sur un bout de chaine d`un field marche po
Pourquoi ça marche pas???? (ODBC et Visual C++ 6)Comment çà marche l'Active X??
Programme compile mais marche pas ! [JAVA]Comment faire un formulaire sous dreamweaver et qui marche!!!
Imprimer avec une HP USB sous 2000 (cm : KT7) : marche 1 fois sur 3Apache + mysql + php4 sous win 2k ? Rhaaaa marche pas !
Algorithme VRAIMENT basic qui ne marche pasa:hover ne marche pas sur tous mes liens!
Plus de sujets relatifs à : [C++] Dll, comment ça marche ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR