2010-08-27 23 views
0

Quand je construis mon Visual C++ Solution (2005), je reçois les avertissements suivantsComment supprimer 'ImageList_Read': avertissement de lien dll incohérent?

1> c: \ winddk \ 7000.0.winmain_win7beta.081212-1400 \ inc \ api \ Commctrl.h (678): voir précédent définition du terme 'ImageList_Read'

1> e: \ xml parse \ développement \ gui \ h \ wtl4mfc.h (6): C4273 Attention: 'ImageList_Write': liaison dll incompatible

1> c: \ winddk \ 7000.0.winmain_win7beta.081212-1400 \ inc \ api \ commctrl.h (679): voir la définition précédente de 'ImageList_Write'

1> e: \ xml parse \ développement \ gui \ h \ wt l4mfc.h (8): C4273 d'avertissement: 'ImageList_ReadEx': liaison dll incompatible

1> c: \ winddk \ 7000.0.winmain_win7beta.081212-1400 \ inc \ api \ Commctrl.h (686): voir définition précédente de 'ImageList_ReadEx'

1> e: \ xml parse \ développement \ gui \ h \ wtl4mfc.h (9): C4273 d'avertissement: 'ImageList_WriteEx': liaison dll incompatible

1> c: \ winddk \ 7000.0.winmain_win7beta.081212-1400 \ inc \ api \ commctrl.h (687): voir la définition précédente de 'ImageList_WriteEx'

Lorsque j'ai vérifié ces deux fichiers, je peux voir ce qui suit:

**** **** Dans wtl4mfc.h

extern "C" { HIMAGELIST WINAPI ImageList_Read (LPSTREAM PSTM); BOOL WINAPI ImageList_Write (HIMAGELIST himl, LPSTREAM pstm);

#if (_WIN32_WINNT> = 0x0501) HRESULT WINAPI ImageList_ReadEx (dwFlags DWORD, LPSTREAM PSTM, REFIID riid, PVOID * VPP); HRESULT WINAPI ImageList_WriteEx (HIMAGELIST, DWORD dwFlags, LPSTREAM pstm);

#endif };

Dans Commctrl.h fichier je peux voir ce qui suit:

WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Read (__ dans struct IStream * PSTM); WINCOMMCTRLAPI BOOL WINAPI ImageList_Write (__ dans HIMAGELIST himl, __ dans struct IStream * pstm); Je suis un débutant en Visual C++ et c'est à partir d'un code qui est disponible pour moi de maintenir. Comment puis-je supprimer ces avertissements? Ces avertissements ne sont pas affichés si je construis le code où la version inférieure de Winddk est installée.

Qu'est-ce qui cause ces avertissements? Comment est-ce que je peux les retirer?

Répondre

0

Cet avertissement vient d'avoir deux déclarations qui ont différentes __declspec. Je m'attends à ce que WINCOMMCTRLAPI masque un attribut __declspec. Pour résoudre ce problème, vérifiez d'abord que vous avez besoin d'inclure ces deux déclarations - peut-être que différents fichiers sources saisissent différents chemins d'inclusion de manière erronée? Ou y compris directement une ancienne version? Vérifiez ensuite s'il existe une macro définie dans votre build qui affecte le développement de WINCOMMCTRLAPI. Il se peut qu'il y ait un réglage de projet qui a mal réglé.

+0

WINCOMMCTRLAPI est développé en tant que DECLSPEC_IMPORT. J'ai modifié les paramètres du projet et supprimé le chemin d'accès winddk des répertoires Include supplémentaires. Les avertissements ont disparu. Merci – Techiegirl