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

Bibliothèques Discussion :

Problème d'appel DLL: i@4 vs @@YGHH


Sujet :

Bibliothèques

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Points : 23
    Points
    23
    Par défaut Problème d'appel DLL: i@4 vs @@YGHH
    Mon projet (MinGW+code::blocks NB+wxWidget 2.8.10) fait appel à une DLL externe. Je n'arrive pas linker l'appel à cette DLL:
    undefined reference to `_imp___Z15User_OpenScreeni@4'

    Le fichier .h de la DLL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define DLL_API _declspec(dllimport)
    DLL_API BOOL __stdcall User_OpenScreen(int CardNum);
    Mon appel à la fonction dans mon projet cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    User_OpenScreen(m_CardNum);
    Le contenu du .def (généré par dlltool à partir du .lib fourni)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LIBRARY "EQ2008_Dll.dll"
    EXPORTS
    User_OpenScreen@@YGHH@Z
    et enfin la commande ayant servi à générer le .a:
    dlltool -v -k -d EQ2008_Dll.def -l EQ2008_Dll.a

    Je soupçonne qu'il s'agit d'une différence au niveau du nom de ma fonction, car dans le def j'ai des @@YGH.. et dans le message d'erreur i@4
    Mais j'avoue sécher sur ce problème.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    As-tu spécifié dans ton projet de lier avec la bibliothèque ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Points : 23
    Points
    23
    Par défaut
    Oui, le fichier .a était bien visible du linker.
    Finalement, je me suis tiré d'affaire en faisant un appel dynamique au lieu d'essayer désespérément de lier ma DLL à la compilation. Dans une autre vie, si j'ai le temps, j'irai chercher pourquoi ce #*-~ de compilateur gcc (enfin, le linker ld) me rajoute plein de @ après le nom honnête et bien identifié de ma fonction, s'empêchant lui-même de la lier.

    Mon code final:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        typedef int __stdcall (*DLLAddTextPtr) (int CardNum,void* pt,int iProgramIndex);
        const wxString uneFonction  = wxT("User_AddText");
        if(LibLoader.HasSymbol(uneFonction))
        {
            DLLAddTextPtr pfnDLL = (DLLAddTextPtr)LibLoader.GetSymbol(uneFonction);
            if (pfnDLL)
            {
                pfnDLL(1,&Text ,1);
                SetStatusText(_("AddText fait"),0);
            }
        }
    en lieu et place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    User_AddText(m_iCardNum,&Text,m_iProgramIndex);

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

Discussions similaires

  1. Problème pour appeler une DLL C en Csharp
    Par juanito7 dans le forum C#
    Réponses: 3
    Dernier message: 21/10/2010, 22h06
  2. problème appel dll c++ non managée depuis C#
    Par zwazillon dans le forum C#
    Réponses: 2
    Dernier message: 19/10/2009, 15h10
  3. Problème d'appel à une fonction de Shell32.dll sous win server 2008
    Par ludogoal dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 05/06/2009, 15h06
  4. [addpath] Problème d'appel d'une dll
    Par salseropom dans le forum MATLAB
    Réponses: 2
    Dernier message: 03/09/2008, 14h20
  5. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30

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