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 :

Problème de Link ... CImageList


Sujet :

MFC

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 76
    Par défaut Problème de Link ... CImageList
    Bonjour/soir,

    J'ai un problème lors de l'edition des liens (link) de mon application en eVC++ 4.0 pour Windows CE.Net 4.1

    J'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Linking...
    ImageTextButton.obj : error LNK2019: unresolved external symbol "public: int __cdecl CImageList::DrawIndirect(class CDC *,int,struct tagPOINT,struct tagSIZE,struct tagPOINT,unsigned int,unsigned long,unsigned long,unsigned long)" (?DrawIndirect@CIma
    geList@@QAAHPAVCDC@@HUtagPOINT@@UtagSIZE@@1IKKK@Z) referenced in function "protected: virtual void __cdecl CImageTextButton::DrawItem(struct tagDRAWITEMSTRUCT *)" (?DrawItem@CImageTextButton@@MAAXPAUtagDRAWITEMSTRUCT@@@Z)
    SH4Rel/test.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
     
    test.exe - 2 error(s), 0 warning(s)
    J'ai chercher la solution mais je ne trouve pas, j'ai bien lu la page MSDN http://support.microsoft.com/kb/260567/fr dans laquelle est expliqué le problème mais j'ai l'impression que cela ne fonctionne pas, ou alors c'est que je n'ai pas compris...

    N'hésitez pas à me demander plus de precision si vous en avez besoin.

    Cordialement, Merci de vos réponses

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 76
    Par défaut
    C'est que personne ne connait mon problème ou bien je n'en ai pas dit assez ?
    Dites le moi, c'est un problème qui me gêne enormement !!

    Quand je met le '/Gz' ça me met unknonw parameter ...
    Faut il que je trouve une librairie specifique ? un parametre ? autre chose ?

    Merci meme si c'est pour ne rien dire ... faites moi signe

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    en regardant la doc je constate :
    ta declaration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CImageList::DrawIndirect(class CDC *,
    int,
    struct tagPOINT,
    struct tagSIZE,
    struct tagPOINT,
    unsigned int,
    unsigned long,
    unsigned long,
    unsigned long)
    celle dans MSDN:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    BOOL DrawIndirect(    CDC* pDC, 
     int nImage, 
     POINT pt,
    SIZE sz,
    POINT ptOrigin,
    UINT fStyle = ILD_NORMAL,
    DWORD dwRop = SRCCOPY, 
    COLORREF rgbBack = CLR_DEFAULT,
    COLORREF rgbFore = CLR_DEFAULT,
    DWORD fState = ILS_NORMAL,
    DWORD Frame = 0,
     COLORREF crEffect = CLR_DEFAULT );
    
    ce n'est pas la même definition ,il manque des arguments à la tienne.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 76
    Par défaut
    Effectivement Il y avait un problème avec le nombre de paramètre !
    Par contre vu que j'utilise eVC++ 4.0 --> les librairies ne sont pas les mêmes apparament, ma fonction DrawIndirect ne comporte que 9 paramètres alors que celle de Visual C++ 6 en comporte 12.

    J'ai essayé de mettre les 12 --> no overloaded function takes 12 parameters



    J'ai corrigé cela mais l'erreur est toujours là ...

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //Draw the image in to the DC
    m_ImageList.DrawIndirect( pDC , 
                              nPosImg , 
                              CPoint m_rectBtn.left,m_rectBtn.top ), 
                              CSize( m_bitmap.bmWidth , m_bitmap.bmHeight ), 
                              CPoint( 0 , 0 ) ,
                              ILD_NORMAL, 
                              SRCCOPY,
                              CLR_DEFAULT, 
                              CLR_DEFAULT );
    Et voici la nouvelle erreur : (qui est en fait la même)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Linking...
    ImageTextButton.obj : error LNK2019: unresolved external symbol "public: int __cdecl CImageList::DrawIndirect(class CDC *,int,struct tagPOINT,struct tagSIZE,struct tagPOINT,unsigned int,unsigned long,unsigned long,unsigned long)" (?DrawIndirect@CIma
    geList@@QAAHPAVCDC@@HUtagPOINT@@UtagSIZE@@1IKKK@Z) referenced in function "protected: virtual void __cdecl CImageTextButton::DrawItem(struct tagDRAWITEMSTRUCT *)" (?DrawItem@CImageTextButton@@MAAXPAUtagDRAWITEMSTRUCT@@@Z)
    SH4Rel/test.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
     
    test.exe - 2 error(s), 0 warning(s)
    Quelle est le .h dans lequel est defini la classe CImageList ? je peux tenter de le modifier ... non ?

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    surtout pas ! , le mieux est de regarder la définitionde cette fonction dans la classe pour evc.
    la version que j'ai posté est celle de MSDN pour visual 2005.

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 76
    Par défaut
    Et dans quel fichier ou librairie la classe CImageList est elle défini ?

    Ps: j'ai ajouté une image des paramètre qu'on me demande dans le post au dessus...

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    a mon avis l'erreur vient de l'utilisation de cette fonction dans ta classe CImageTextButton pour la fonction DrawItem..

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 76
    Par défaut
    Je n'aime pas vraiment mettre du code dégueu ... mais la je vais etre oblilgé alors ...

    Je suis désolé de la longueur de ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    void CImageTextButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct ) 
    {
    if( lpDrawItemStruct->CtlType != ODT_BUTTON)
          return;
        //To keep the text color 
        COLORREF clrText;
     
        int nImgCount =0;
        //Keeps the index of the image(based on 0) to be drawn
        int nPosImg=0;
     
        CDC *pDC = CDC::FromHandle( lpDrawItemStruct->hDC );
        if(!m_bLoaded)
        {
          m_rectBtn = lpDrawItemStruct->rcItem;
        }
        else
        {
          //Gets the number of image in the image list
          nImgCount = m_ImageList.GetImageCount();
          ::SetWindowPos(lpDrawItemStruct->hwndItem,NULL,m_rectBtn.left,m_rectBtn.top,m_bitmap.bmWidth,m_bitmap.bmHeight,SWP_NOMOVE);
     
        }
     
        pDC->DrawFrameControl( &m_rectBtn ,DFC_BUTTON , DFCS_BUTTONPUSH|DFCS_PUSHED);
        //if( m_bLoaded )
        {
          if(ODS_DISABLED & lpDrawItemStruct->itemState)
          {
            if( m_bLoaded )
            {
              if(3== nImgCount)
                nPosImg = 2;
              else
                nPosImg =0;
            } 
            clrText = m_clrCptnDisabled;
          }
          else if(ODS_SELECTED & lpDrawItemStruct->itemState)
          {
            if( m_bLoaded )
            {
              if(2 <= nImgCount )
                nPosImg = 1;
    		  else
                nPosImg =0;
            }
            clrText = m_clrCptnUpDwn;
          }
          else 
          {
            if( m_bLoaded )
            {
              nPosImg =0;
            }
            clrText = m_clrCptnUpDwn;
          }
          if( m_bLoaded )
          {
          //Draw the image in to the DC
          m_ImageList.DrawIndirect( 
                                   pDC , 
                                   nPosImg , 
                                   CPoint( m_rectBtn.left,m_rectBtn.top ), 
                                   CSize( m_bitmap.bmWidth , m_bitmap.bmHeight ), 
                                   CPoint( 0 , 0 ) , 
                                   ILD_NORMAL,
    							   SRCCOPY,
    							   CLR_DEFAULT,
    							   CLR_DEFAULT
                                  );
          }
        }
        if(!m_strText.IsEmpty())
        {
          pDC->SetBkMode(TRANSPARENT);
          pDC->SetTextColor( clrText);
     
          HFONT hOldFont=NULL;
         //Sets the font
          if(m_Font.GetSafeHandle() != NULL)
          {
            hOldFont =(HFONT) pDC->SelectObject(m_Font.GetSafeHandle());
          }
          if(m_nYpos!=-1 && m_nXpos!=-1)
          {
           // pDC->TextOut(m_nXpos,m_nYpos,m_strText);
          }
          else
          {
            pDC->DrawText( m_strText, m_rectBtn , m_uiPos);
          }
          //Reset the old font
          if(hOldFont != NULL)
          {
            pDC->SelectObject(hOldFont);
          }
      }
    }

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 76
    Par défaut
    Je viens d'essayer avec l'autre solution mais la encore j'ai la meme erreur ...
    Je ne comprend d'ou ça peut venir !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    IMAGELISTDRAWPARAMS drawing;
     
    	drawing.i = nPosImg;
    	drawing.hdcDst = pDC->m_hDC;
    	drawing.x = m_rectBtn.left;
    	drawing.y = m_rectBtn.top;
    	drawing.cx = m_bitmap.bmWidth;
    	drawing.cy = m_bitmap.bmHeight;
    	drawing.xBitmap = 0;
    	drawing.yBitmap = 0;
    	drawing.rgbBk = CLR_DEFAULT;
    	drawing.rgbFg = CLR_DEFAULT;
    	drawing.fStyle = ILD_NORMAL;
    	drawing.dwRop = SRCCOPY;
    	m_ImageList.DrawIndirect(&drawing);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Linking...
    ImageTextButton.obj : error LNK2019: unresolved external symbol "public: int __cdecl CImageList::DrawIndirect(struct _IMAGELISTDRAWPARAMS *)" (?DrawIndirect@CImageList@@QAAHPAU_IMAGELISTDRAWPARAMS@@@Z) referenced in function "protected: virtual void
     __cdecl CImageTextButton::DrawItem(struct tagDRAWITEMSTRUCT *)" (?DrawItem@CImageTextButton@@MAAXPAUtagDRAWITEMSTRUCT@@@Z)
    SH4Rel/test.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
     
    test.exe - 2 error(s), 0 warning(s)

Discussions similaires

  1. [DLL/classe template] problème de link
    Par Bob.Killer dans le forum C++
    Réponses: 7
    Dernier message: 31/08/2005, 18h56
  2. Problème de link...
    Par Royd938 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/09/2004, 17h33
  3. C/asm : problème pour link
    Par SteelBox dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 06/04/2004, 23h03
  4. Problème de LINK Bizarre !!
    Par Jasmine dans le forum MFC
    Réponses: 24
    Dernier message: 19/03/2004, 15h58
  5. Problème de link avec Borland C++ 5.5
    Par gelam dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 24/11/2003, 16h45

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