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

 


Dernière réponse
Sujet : [C++] Dll, comment ça marche ?
Bruce 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 ;)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Bruce 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 ;)
freewol 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 ...
WiseTechi 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++
Toxin Je suis preneur pour ma culture aussi :)
seblamb 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.
SoWhatIn22 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.
WiseTechi Arg, zut, je me disais bien aussi....
 
A++
seblamb #import "ma_dll.dll"  ne marche que pour les dll qui contiennent des ActiveX.
WiseTechi 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--

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

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