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

  FORUM HardWare.fr
  Programmation

  [C/C++] dll...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C++] dll...

n°77597
godbout
Génial.
Posté le 03-12-2001 à 11:13:00  profilanswer
 

Je sens que je vais me faire engueuler moi :D
 
Le topic sur les dll a disparu, et je voudrais m'assurer d'avoir bien compris tout ca, parce que j'ai des petits pb (segment error) en ce moment, et ca a l'air de venir de l'exportation des fonctions.
Voila ce que j'ai compris, si y a une erreur que quelqu'un m'arrete ;)
 
1) Pour exporter des fonctions, on a deux possibilites:
 
Soit un .DEF, ou l'on met le nom des fonctions a exporter, soit on define un DEFNIMP __declspec(dllexport), et devant chaque fonction a exporter on met DEFNIMP.
 
2) Pour utiliser la dll, soit un utilise le lib et les .h que l'on met dans le projet (run time), soit on fait un LoadLibrary et un GetProcAddress (load time (plug in)).
 
Voila si j'ai oublie des trucs ben c'est que je les sais pas.
J'crois que ca doit etre pas trop mal mais y a encore quelques trucs que je comprends pas bien, genre le .DEF (j'arrive pas avec les ordinaux @..)...

mood
Publicité
Posté le 03-12-2001 à 11:13:00  profilanswer
 

n°77600
chrisbk
-
Posté le 03-12-2001 à 11:16:20  profilanswer
 

a mon avis il apas disparu, juste qu'il est plus vieux que la date de limite de recherche :D
 
 
Sinon oui ca a l'air OK to souc . si y trouve po la fonction y va te rendre un ptr NULL donc regarde si c'est ca . (sinon bah c ailleurs ;) )

n°77601
godbout
Génial.
Posté le 03-12-2001 à 11:18:00  profilanswer
 

j'ai pas acces a l'exe pour la dll que je fais, donc pour le pointeur c'est : dmc :

n°77602
godbout
Génial.
Posté le 03-12-2001 à 11:18:49  profilanswer
 

ok pour la recherche, je croyais qu'au bout de 15 jours ca degageait, je vais relire le topic

n°77604
godbout
Génial.
Posté le 03-12-2001 à 11:20:34  profilanswer
 

Apparemment ca viendrait du fait que je fais en meme temps un  __declspec(dllexport) et un .DEF, pourtant dans le msdn ils disent qu'on peut faire les deux a la fois :??:

n°77605
chrisbk
-
Posté le 03-12-2001 à 11:20:48  profilanswer
 

bah t'as l'exe (au moins pour tester) non ?
ben tu compile ta DLL en debug et lance le debuggeur ...tu verra comme ca si tu entre dans ta fonction..

n°77607
chrisbk
-
Posté le 03-12-2001 à 11:22:15  profilanswer
 

fais gaffe paske ton .h il est partage
 
donc :
 
__declspec(dllexport) pour le .h quand tu compile ta DLL
 
et
 
__declspec(dllimport) pour le .h quand tu compile l'exe

n°77608
godbout
Génial.
Posté le 03-12-2001 à 11:22:25  profilanswer
 

ouais je rentrais dans la fonction, c'est apres le return que ca chiait mais l'explication est juste au dessus ;)

n°77609
BENB
100% Lux.
Posté le 03-12-2001 à 11:22:44  profilanswer
 

Juste une note-> les fonction qui sont exportee par la Dll doivent etre importe par ceux qui utilisent la Dll, et la ...
 
soit tu utilises __declspec(dllimport), d'on l'interet d'un define suivant que le .h est lu dans la Dll ou dans l'utilisateur....
 
soit tu fait un GetProcAdress... mais la un Pb peut se poser, en effet le "vrai nom" d'un fonction C++ inclus des decoration (pour indiquer la liste des types des arguments) et donc une fonction qui n'est pas definie avec extern 'C" peut etre dure a trouver...

n°77610
godbout
Génial.
Posté le 03-12-2001 à 11:23:33  profilanswer
 

chrisbk a écrit a écrit :

fais gaffe paske ton .h il est partage
 
donc :
 
__declspec(dllexport) pour le .h quand tu compile ta DLL
 
et
 
__declspec(dllimport) pour le .h quand tu compile l'exe  




 
j'avais raccourci mais effectivement j'ai mis ca:
 
#ifdef MOBALPA_EXPORTS
#define MOBALPA_API __stdcall // = WINAPI
#else
#define MOBALPA_API __stdcall
#endif
 
 
Mais partage comment ca ?
il est inclus aussi dans l'exe ?, ou alors il l'utilise lors de l'appel ?

mood
Publicité
Posté le 03-12-2001 à 11:23:33  profilanswer
 

n°77611
chrisbk
-
Posté le 03-12-2001 à 11:25:27  profilanswer
 

Y departage a la compilation
 
dans ton projet DLL fo que tu inclue MOBALPA_EXPORTS dans les symbols definie  
 
project - settings - C/C++ - preprocessor - preprocessor definition

n°77612
godbout
Génial.
Posté le 03-12-2001 à 11:27:05  profilanswer
 

BENB -> Tout ce que je sais c'est que dans l'exe ils utilisent un LoadLibrary et un GetProcAddress, on m'a juste file les fonctions qui sont appelees, et moi je retravaille dessus.
Mais bon sur ca y a pas de prob, c'est plutot entre .DEF/__desc...
que ca coince un peu.
Mais j'ai change les __declspec(dllexport) / (dllimport) en __stdcall et c'est bon, y a plus de pb.
Pour les fonctions elles sont en extern "C"

n°77613
godbout
Génial.
Posté le 03-12-2001 à 11:27:32  profilanswer
 

chrisbk a écrit a écrit :

Y departage a la compilation
 
dans ton projet DLL fo que tu inclue MOBALPA_EXPORTS dans les symbols definie  
 
project - settings - C/C++ - preprocessor - preprocessor definition  




 
C'est fait, t'inquiete ;)
Pas de pb de ce cote la.

n°77617
godbout
Génial.
Posté le 03-12-2001 à 11:50:01  profilanswer
 

j'crois que j'me suis troue au niveau du run time qui est plutot avec le LoadLibrary et Load time avec un fichie lib...


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

  [C/C++] dll...

 

Sujets relatifs
Plus de sujets relatifs à : [C/C++] dll...


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