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

 


Dernière réponse
Sujet : [C/C++] dll...
godbout 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...

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

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.

godbout 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"
chrisbk 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
godbout

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 ?

BENB 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...
godbout ouais je rentrais dans la fonction, c'est apres le return que ca chiait mais l'explication est juste au dessus ;)
chrisbk 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
chrisbk 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..
godbout 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 :??:
godbout ok pour la recherche, je croyais qu'au bout de 15 jours ca degageait, je vais relire le topic
godbout j'ai pas acces a l'exe pour la dll que je fais, donc pour le pointeur c'est : dmc :
chrisbk 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 ;) )
godbout 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 @..)...

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