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

C++ Discussion :

Dll et problème d'ESP


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Par défaut Dll et problème d'ESP
    Bonjour à tous,

    Je travaille acuellement avec une Dll contenant une classe et ses méthodes.
    Je lis cette Dll à mon main dynamiquement et récupère dans cette Dll une fonction de type que je stocke dans un pointeur de fonction.

    J'ai réussi à faire en sorte que lors de la compilation de ma Dll le nom de cette fonction ne soit pas décoré, et j'arrive à correctement initialiser mon pointeur de fonction.

    Mon problème vient lorsque j'essaye d'appeler cette fonction, une erreur apparait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.  This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
    Je me suis penché un peu sur les "calling convention" et la seule chose que je sais c'est que cela ne provient pas de la décoration du nom de la fonction car le bug se produit même sans décoration.
    Ma fonction a le préfixe "__stdcall". J'ai essayé de l'insérer dans la définition de mon pointeur de fonction mais sans succès.

    Quelqu'un pourrait-il m'expliquer d'où vient le problème et comment le résoudre ?

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Captain_JS
    Ma fonction a le préfixe "__stdcall". J'ai essayé de l'insérer dans la définition de mon pointeur de fonction mais sans succès.
    Tu as trouvé l'origine du probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int (__stdcall*fptr) (int);
    extern "C" int (*fptr) (int);

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Par défaut
    Ah yes la 1ère solution marche

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. L'enregistrement d'une dll pose problème
    Par Pierrot117 dans le forum Windows
    Réponses: 3
    Dernier message: 25/06/2008, 10h09
  2. Réponses: 10
    Dernier message: 14/06/2008, 20h16
  3. Réponses: 5
    Dernier message: 24/01/2008, 17h04
  4. [Dll & Déploiment] Problème avec des dll nonmanagée
    Par genki dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 27/03/2007, 09h32
  5. [dll SWT] Problème avec SWT et Eclipse 3.1.1
    Par guizmo_ dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 18/11/2005, 01h02

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