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

  FORUM HardWare.fr
  Programmation
  C++

  chargement dynamique de dll échoue

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

chargement dynamique de dll échoue

n°149235
freewol
Ceci n'est pas une citation
Posté le 02-06-2002 à 12:08:58  profilanswer
 

Voila je comprends plus rien là :
j'ai créé une dll toute simple, juste pour un test. Si j'essaie de la linker en utilisant le header et la lib, ça marche nickel je peux utiliser les fonctions qui sont dessus.
Mais si j'essaie la méthode dynamique décrite dans la msdn, ie LoadLibrary suivi de GetProcAddress, ça échoue à chaque fois, et ce avec la même dll !!
Alors moi je n'avais jusqu'à présent utilisé que la 1ere méthode, donc je ne connais rien à la seconde, si vous pouviez m'expliquer ce que j'ai mal fait, vous me rendriez un immense service !!

mood
Publicité
Posté le 02-06-2002 à 12:08:58  profilanswer
 

n°149237
youdontcar​e
Posté le 02-06-2002 à 12:13:14  profilanswer
 

qu'est-ce qui plante, LoadLibrary() ou GetProcAdress() ?

n°149238
freewol
Ceci n'est pas une citation
Posté le 02-06-2002 à 12:22:56  profilanswer
 

Non, loadlibrary est nickel, c'est juste getprocaddress qui merde

n°149242
youdontcar​e
Posté le 02-06-2002 à 12:27:24  profilanswer
 

comment exportes-tu tes méthodes ? fichier .def ?
 
au passage, ce topic me rappelle que tu n'es pas le premier à poser la question ... as-tu fait une recherche ?

n°149243
Hercule
Posté le 02-06-2002 à 12:43:42  profilanswer
 

verifie le typage et nom de la fonction pour getProcAdresse
 
vérifie aussi que tu as bien mis dans to projet de la dll devant les fonctions exporté:
 extern "C" __declspec(dllexport)


---------------
Ils veulent la jouer hard, on va la jouer hard  
n°149247
freewol
Ceci n'est pas une citation
Posté le 02-06-2002 à 13:02:04  profilanswer
 

alors non je n'utilise pas de .def, juste des __declspec(dllexport) devant les fonctions.
Oui j'ai fais une recherche sur tous les sujets contenant dll depuis le début, et j'ai tout lu sans résultat.
hercule > j'ai essayé de rajouter extern "C", sans résultat :(
 
Voila ma déclaration :
extern "C" __declspec (dllexport) void WINAPI Coucou (void);
 
ensuite je fais ça :
typedef void (WINAPI * Fonction)(void);
Fonction Hello;
HINSTANCE hDLL = LoadLibrary ("MaDll" );
Hello = (Fonction) GetProcAddress (hDLL, "Coucou" );
et là hello = 0, et getlasterror renvoie 126 ... erreur très mal documentée.

 

[jfdsdjhfuetppo]--Message édité par freewol le 02-06-2002 à 13:03:31--[/jfdsdjhfuetppo]

n°149251
youdontcar​e
Posté le 02-06-2002 à 13:08:56  profilanswer
 

essaye de passer par un .def, j'avais eu des problèmes avec le dllexport. le .def réglait la chose.  
 
mais tu devrais pouvoir régler le problème en lisant la doc à fond. une page de la msdn qui explique l'export en détail : http://msdn.microsoft.com/library/ [...] _a_DLL.asp

n°149253
freewol
Ceci n'est pas une citation
Posté le 02-06-2002 à 13:31:04  profilanswer
 

pour le lien vers la msdn, je l'avais déjà lu, ça n'a rien réglé
ensuite pour le .def, je veux bien, mais je n'ai absolument pas compris comment ça marche, alors j'ai bien essayé de créer un fichier .ref et de l'ajouter au  projet, avec les lignes
LIBRARY MaDLL
EXPORTS
    Coucou @1
mais bon je vois pas trop ce que ça pourrait changer si je règle pas une qcq option, mais la msdn est absolument incrompréhensible à ce sujet, donc un peu d'aide serait la bienvenue ...

n°149263
youdontcar​e
Posté le 02-06-2002 à 14:33:43  profilanswer
 

un peu de lumière sur l'export :
 
http://groups.google.com/groups?q= [...] net&rnum=2 (et le thread associé)
 
en utilisant dependency walker (inclus avec vc++, sinon -> google) tu devrais retrouver le nom décoré.  
 
pour le .def, ça se rajoute dans les options de linking (alt+f7, regarde le contrôle tout en bas avec la ligne de commande). rajoute  
  /def:"monfichierdedef.def"

n°149267
freewol
Ceci n'est pas une citation
Posté le 02-06-2002 à 15:00:42  profilanswer
 

ohlala ... merci merci merci !
grâce à ces 3 super conseils, je viens de tout (euh ... enfin presque tout ;)) comprendre aux dll !!
Encore merci.

mood
Publicité
Posté le 02-06-2002 à 15:00:42  profilanswer
 

n°149269
youdontcar​e
Posté le 02-06-2002 à 15:06:37  profilanswer
 

ça marche au moins ? :D

n°149272
freewol
Ceci n'est pas une citation
Posté le 02-06-2002 à 15:20:19  profilanswer
 

oui perfectly, c'est tout nickel
en fait le truc c'est que vc++ exportait ma fonction coucou sous un nom du genre ?coucouc@@XYYXYZ alors bon, c'est sur que ça marchait moins bien ...

n°149274
youdontcar​e
Posté le 02-06-2002 à 15:25:10  profilanswer
 

ok :)


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

  chargement dynamique de dll échoue

 

Sujets relatifs
[VB] Création dynamique de composants VB[flash] effet de transparence sur un champ text dynamique?
[JS]Bouton dynamique ON ou OFF[vb6]comment crée un objet en dynamique ?
[QT] contenu dynamique avec la classe QMainWindow[MFC] Création dynamique d'un CDialogBar avec le contenu d'un CDialog
Comment avoir une form dynamique en VB?[MFC] Problème avec un menu dynamique
[JAVASCRIPT] Menu dynamique[HTML/PHP] chargement de 2 feuilles
Plus de sujets relatifs à : chargement dynamique de dll échoue


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