begin process at 2012 02 11 22:33:59
  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 problème pour utiliser une DLL en C [ par aurhas ] Bonjour, j'ai une DLL FTDI pour laquelle je dispose des fichiers dll, lib et h. J'ai également une doc pour décrire les fonctions, leurs paramètres e Exporter une class depuis une DLL et l'utiliser dans un programme quelconque [ par Havy ] DLL contenant la classe (Maths.dll) #define DllExport __declspec (dllexport)class DllExport Test{    private: int nombre;    public: int Carre(in Comment utiliser "loadFrom" dans un manifest d'une application [ par braxivamov ] Bonjour, pour faire simple j'ai recodé quelques dll du style gdi32.dll. J'ai exporté les fonctions de la dll originale, j'ai remplacé le fonctionneme Code::Block DLL pour l'utiliser dans VB [ par runo ] Bonjour, je souhaite créer une DLL en C (ou C++) avec Code::Block que j'utiliserai ensuite sous VB (en fait excel 2003)... Je crée donc mon projet DL utiliser un code C sous Matlab (Linux) [ par piboue ] Bonjour, je souhaite utiliser un code C sous matlab comme une fonction classique (input/ouput). A l'origine, ce code a été compiler (je sais pas si c' 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,139 sec (4)

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