kollibar
Messages postés45Date d'inscriptionsamedi 7 juin 2003StatutMembreDernière intervention31 janvier 2006
-
9 déc. 2005 à 18:31
kok_ofgod
Messages postés3Date d'inscriptionmardi 31 janvier 2006StatutMembreDernière intervention26 avril 2007
-
26 avril 2007 à 11:09
bonjour
je veux utiliser les fonctiopns d'une dll de façon dynamique que j'ai créer, je me suis inspiré d'autres source mais je ne comprend pas pourquoi ca ne marche pas!
J'arrive a charger la dll mais pas a appeller une de ces fonctions!
est ce que quelqu'un pourrait me dire exactement comment ca fonctionne...
qu'eqst ce qu'il faut faire dans la dll, comment il faut déclarer les fonctions et comment on appelle les fonctions depuis l'exe.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 déc. 2005 à 18:46
Certaines fonctions sont décorées (contiennent par exemple @4 à la fin).
Avec ce prog, tu saura quel est le nom exact de chaque fonction exportée, et tu pourra la récupérer avec GetProcAddress
http://www.cppfrance.com/code.aspx?ID=25603
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 déc. 2005 à 20:16
Les fonctions __stdcall sont décorée _nom@XX
Les fonctions __cdecl sont décorées _nom
Les fonctions __fastcall sont décorées nom@XX
Ou XX est la somme des tailles en octets des paramètres
Il doit quand même y avoir moyen que les noms ne soient pas décorés, par exemple celles de shell32.dll ne le sont pas.
J'ai essayé avec VC++ 2005, et une fonction f est décorée en ?f@@YGXH@Z, donc c'est plutot inquiétant.
Tu devrais choisir l'autre solution, qui consiste à créer un fichier lib que tu utilisera dans ton projet utilisant la DLL
kollibar
Messages postés45Date d'inscriptionsamedi 7 juin 2003StatutMembreDernière intervention31 janvier 2006 9 déc. 2005 à 20:37
merci!!
et une autre question vite fait... une dll n'a pas le droit de créer des thread???
j utilise dev-c++ et il me dit permission denied qd je veux créer un thread aevc une dll!! mais il le met de manière aléatoir(j'ai pu la compiler mais pâs a achaque fois.. alors que je n'avais que changé les noms des fonctions)
Vous n’avez pas trouvé la réponse que vous recherchez ?
kok_ofgod
Messages postés3Date d'inscriptionmardi 31 janvier 2006StatutMembreDernière intervention26 avril 2007 24 avril 2007 à 10:34
Bonjour!
je travaille sur un projet bluetooth intégrant la nouvelle console de nintendo la Wii.
j'aimerai automatiser la première étape sui consiste à :
1/- lancer bluesoleil
2/- Rechercher les prériphériques Bluetooth (pour le moent la Wii)
3/- Activer les services ( actuellement le profil HID)
4/- Choisir un service puis se connecter avant de l'utiliser. (etant le seul connexion au profil)
j'ai télécharger l'Api bluesoleil à cette adresse
http://www.bluesoleil.com/download/index.asp elle a été developpée avec visual studio 6.0 et moi j'utilise visual studio 2005.
Dans la documentation il conseille de cahrager les fonction en faisant recours non pas au fichiers d'entet et à la lib mais plutot d'utiliser la dll (btfunc.dll) installé dans le reperoire systeme "System32" de windows par bluesoleil.
Ne sachant pas comment fonctionne loadLibrary(), je suis me suis rendu sur le site de microsoft msdn et j'ai récupéré l'aide qui se trouve à cette adresse
http://msdn2.microsoft.com/en-us/library/ms686944.aspx J'ai remplacé "myPuts" de l'exemple par ma dll c'est à dire "btfunc.dll"
à l'exécution "GetProcAddress" echoue a chaque fois.
en lisant ce qui est cidessus, j'ai pu me rendre à cette adresse
http://www.cppfrance.com/code.aspx?ID=25603 le fichier ImportExport.exe affiche bien le contenu de la dll.
en me montrant les dépendance (les autres dll appelées)
moi je ne réussi pas à appeller la fonction "BT_GetVersion" comme dit dans la doc