dll... [C/C++] - Programmation
Marsh Posté le 03-12-2001 à 11:16:20
a mon avis il apas disparu, juste qu'il est plus vieux que la date de limite de recherche
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 )
Marsh Posté le 03-12-2001 à 11:18:00
j'ai pas acces a l'exe pour la dll que je fais, donc pour le pointeur c'est : dmc :
Marsh Posté le 03-12-2001 à 11:18:49
ok pour la recherche, je croyais qu'au bout de 15 jours ca degageait, je vais relire le topic
Marsh Posté le 03-12-2001 à 11:20:34
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
Marsh Posté le 03-12-2001 à 11:20:48
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..
Marsh Posté le 03-12-2001 à 11:22:15
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
Marsh Posté le 03-12-2001 à 11:22:25
ouais je rentrais dans la fonction, c'est apres le return que ca chiait mais l'explication est juste au dessus
Marsh Posté le 03-12-2001 à 11:22:44
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...
Marsh Posté le 03-12-2001 à 11:23:33
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 ?
Marsh Posté le 03-12-2001 à 11:25:27
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
Marsh Posté le 03-12-2001 à 11:27:05
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"
Marsh Posté le 03-12-2001 à 11:27:32
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.
Marsh Posté le 03-12-2001 à 11:50:01
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...
Marsh Posté le 03-12-2001 à 11:13:00
Je sens que je vais me faire engueuler moi
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 @..)...