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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    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
    Par défaut
    Bonjour,
    As-tu spécifié dans ton projet de lier avec la bibliothèque ?

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    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