begin process at 2010 02 09 22:46:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

comment utiliser les fonctions d'une dll


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

comment utiliser les fonctions d'une dll

vendredi 9 décembre 2005 à 18:31:47 | comment utiliser les fonctions d'une dll

kollibar

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. merci
vendredi 9 décembre 2005 à 18:46:32 | Re : comment utiliser les fonctions d'une dll

vecchio56

Administrateur CodeS-SourceS
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 Bien sur, il faut déclarer les fonctions en __declspec(dllexport) Par exemple, tu peux regarder cette source http://www.cppfrance.com/code.aspx?ID=24723
vendredi 9 décembre 2005 à 19:47:12 | Re : comment utiliser les fonctions d'une dll

kollibar

effectivement je n'y arrivais pas juste parce que le nom de la fonction était transformé @0 a la fin! y a pas un moyen de forcer à garder le meme nom???
vendredi 9 décembre 2005 à 20:16:33 | Re : comment utiliser les fonctions d'une dll

vecchio56

Administrateur CodeS-SourceS
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 Du coup, plus besoin de charger la DLL explicitement, et plus de GetProcAddress Exemple: http://www.cppfrance.com/code.aspx?ID=25998
vendredi 9 décembre 2005 à 20:37:45 | Re : comment utiliser les fonctions d'une dll

kollibar

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)
vendredi 9 décembre 2005 à 20:50:13 | Re : comment utiliser les fonctions d'une dll

vecchio56

Administrateur CodeS-SourceS
Je n'ai pas eu de problème pour créer un thread dans une DLL. C'est CreateThread qui échoue?
vendredi 9 décembre 2005 à 21:00:30 | Re : comment utiliser les fonctions d'une dll

kollibar

je comprend pas... maintenant ca compile correctement je n'ai pourtant rien changé!!(sauf le nom ) par rapport au nom j avais pas fait gaffe, il rajout _Z7 devant et v@0 derrière. pour le @0 je saius ce que c'est maintenant mais le _Z7 et le v?
vendredi 9 décembre 2005 à 21:10:38 | Re : comment utiliser les fonctions d'une dll

vecchio56

Administrateur CodeS-SourceS
Je n'en sais rien. Si tu ne veux pas vérifier à chaque foiss, tu fais la méthode avec la lib, c'est plus simple
mardi 24 avril 2007 à 10:34:15 | Re : comment utiliser les fonctions d'une dll

kok_ofgod

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




mardi 24 avril 2007 à 10:42:17 | Re : comment utiliser les fonctions d'une dll

kok_ofgod

je n'arrive pas coller l'image du résultat de importExport sur mon pc

bon je vais donc saisir ce que j'ai
   
       001   0x00001d40   BT_CheckFeature
       002   0x000015d0   BT_BrowseServices
       .....
       016   0x00001cb0   BT_GetVersion


et voici mon code


// A simple program that uses LoadLibrary and
// GetProcAddress to access myPuts from Myputs.dll.
 
#include <stdio.h>
#include <windows.h>
 
typedef int (*MYPROC)(LPTSTR);

 
VOID main(VOID)
{
    HINSTANCE hinstLib;
    MYPROC ProcAdd;
    BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
 
    // Get a handle to the DLL module.
    printf("call of load lib. \n");
    hinstLib = LoadLibrary(TEXT("btfunc.dll"));
   
    // If the handle is valid, try to get the function address.
 
    if (hinstLib != NULL)
    {
        printf("call succed LoadLibrary...\n");
        printf("call GetProcAddress \n\n");
        ProcAdd = (MYPROC) GetProcAddress(hinstLib, (LPCSTR)TEXT("BT_GetVersion"));
 
        // If the function address is valid, call the function.
 
        if (NULL != ProcAdd)
        {
            printf("call succed GetProcAddress...\n");
            fRunTimeLinkSuccess = TRUE;
            (ProcAdd) (TEXT("Message via DLL function\n"));
            //(int) (TEXT("Message via DLL function\n"));
        }
 
        // Free the DLL module.
 
        fFreeResult = FreeLibrary(hinstLib);
    }
 
    // If unable to call the DLL function, use an alternative.
 
    if (! fRunTimeLinkSuccess)
        printf("Unable to get DLL function adress \n\n so Message via alternative method\n");
}


J'ai jamais réussi à m'inscire sur le forum de bluesoleil. a chaque fois j'ai un pb avec leur serveur ou alors le login est déjà utiliser.

merci pour l'aide

1 2

Cette discussion est classée dans : dll, utiliser, fonctions


Répondre à ce message

Sujets en rapport avec ce message

Comment utiliser une DLL tiers? [ par StefB ] Bonjour a tous,QUESTIONS : - Comment utiliser les classes, varaibles, constantes et fonctions dans une DLL sous VC++?- Est-ce t'il existe un tutoriel Comment utiliser une DLL tiers ? [ par StefB ] Bonjour a tous,QUESTIONS : - Comment utiliser les classes, varaibles, constantes et fonctions dans une DLL sous VC++?- Est-ce t'il existe un tutoriel DLL et fenetre de dialogue [ par ricky78 ] Bonjour J'essaye pour la premiere fois de mettre des fonctions de mon code dans une DLL. Sur differents tutoriel et aide j'arrive bien a cree et a uti Utiliser les fonctions contenues dans des classes d'une DLL [ par romauto750 ] Bonjour à tous,Je me tourne vers vous car je dois utiliser les fonctions d'une dll. Le problème c'est que dans cette dll, il y a plusieurs classes. Je Probleme DLL sous Visual 2008 [ par romainbisson ] Bonjour, J'ai un fichier DLL contenant toutes les fonctions en C me permettant de travailler sur mon projet (pilotage d'un boitier RFID). Ma question Problème fonctions décorées dans une DLL [ par TryToHelpMe ] Bonjour, je n'ai pas par habitude de demander de l'aide au premier problème rencontré. ( La preuve, je dois me recréer un compte à chaque fois que j'a Compilation dll avec appelle de fonctions externes [ par pingosso ] Bonjour, Je travaille en ce moment sur un projet qui rassemble du C du VB.NET et du fortran. EN fait j'ai un problème pour faire communiquer le simu Projet de détection d'AP wifi [ par Korangarr ] Bonjour à toutes et à tous, Dans le cadre de mes études, je dois créer un détecteur de points d'accès Wifi. Ce sera un programme qui devra tourner su DDK : Comment utiliser les fonctions windows [ par Booster ] Bonjour à tous,Alors voilà, c'est mes premiers pas dans le développement de drivers.J'essaie de hooker createfile (J'ai trouvé des exemples) donc j'y CREER ET UTILISER DLL SOUS DEV C++ [ par lectpe ] Bonjour à tous.Je voudrais créer et utiliser une dll en C et sous DEV C++ et je ne sais pas comment faire.J'ai beau chercher sur CS ou sur google, je


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 17,987 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales