IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

probleme de stdcall


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut probleme de stdcall
    Bonjour a tous,

    J'ai un probleme de chargement de dll. Je vous explique:

    Je travaille sous Visual Studio 2008 en C++ sur une dll qui utilise les autres dll du projet par cdecl. Or j'ai besoin d'utiliser une autre dll qui elle utilise _stdcall comme convention.

    C'est a ce niveau la que je suis bloque, car je ne vois pas comment me sortir de cette situation inextricable a mes yeux!!

    Quelqu'un aurait-il une solution a me proposer?

    Merci d'avance

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    La librairie d'importation de ta DLL en stdcall (mode qu'il faudrait d'ailleurs privilégier si tu veux être plus facilement interfacé avec d'autres langages, ceci étant dit...), ainsi que ses entêtes, possède normalement déjà les éléments nécessaires à l'importation correcte.

    Si ce n'est pas le cas, que possèdes-tu comme éléments pour utiliser la DLL en question ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut
    En fait, je ne possède qu'une DLL (ExtraPuTTY pour ne pas la nommer) qui sert d'interface à un executable. J'utilise alors un loadLibrary pour l'utiliser.

    Je ne possède malheureusement rien d'autre pour l'utiliser...

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    HEIN ?? :
    Tu n'as même pas un entête (.H) pour cette DLL ????
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut
    Ben nan, j'ai pas d'entête pour faire les choses proprement

    J'ai juste la DLL à charger dynamiquement, et rien d'autre.

    L'embetant, c'est que j'ai besoin des fonctions qu'elle fournit mais que son chargement (_stdcall ) est incompatible avec mes autres dll (_cdecl )

    sniff

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Ceci se règle dans l'entête, via les directives d'importation. Ce n'est pas un problème, mais de toutes façons, que veux-tu charger si tu n'as pas les fonctions de la DLL ainsi que les prototypes des fonctions en question ??

    Tu dois forcément avoir quelque chose : un .H, une doc, quelque chose. Sinon, cherches sur le net le "vrai" pack de développement, et si tu n'as toujours rien, gueules auprès de ton responsable.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  7. #7
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut
    Effectivement, dans une doc j'ai le prototype des fonctions pour pouvoir les utiliser ( c'est plus pratique ). C'est d'ailleurs ce qui me permet d'appeler les fonctions.

    Le petit pépin pour moi c'est surtout le chargement...

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par vimacs Voir le message
    Effectivement, dans une doc j'ai le prototype des fonctions pour pouvoir les utiliser ( c'est plus pratique ). C'est d'ailleurs ce qui me permet d'appeler les fonctions.
    Bon, ben faut transformer ça en un fichier .H pour commencer, et définir le bon type d'importation.

    Exemple (entête .H d'utilisation de la librairie) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Type fonctionnel pour importer "DWORD FunctionDll1(DWORD,DWORD,LPVOID)" depuis la DLL.
    typedef __declspec(dllimport) DWORD (__stdcall *ptrfunctiondll1) ( DWORD param1, DWORD param2, LPVOID param3 ) ;
    // Définit le pointeur de fonction lui-même.
    extern ptrfunctiondll1 FunctionDll1 ;
    Fichier .C d'importation "réelle" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FunctionDll1 = GetProcAddress(hLibrary,"FunctionDll1");
    Voilà. J'ai un doute sur l'utilité réelle du "__declspec(dllimport)" (peut-être pas nécessaire, à tester), le reste est bon.

    Tu n'as plus qu'à répéter la séquence "déclaration de type / de fonction / GetProcAddress" pour chaque fonction de la DLL, et prévoir bien sûr le code LoadLibrary/FreeLibrary adéquat tout autour.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. Probleme d'appel d'une dll, sans lib et sans stdcall
    Par tchern dans le forum Visual C++
    Réponses: 8
    Dernier message: 31/07/2007, 16h37
  2. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo