Как удалить 'ImageList_Read': несогласованное предупреждение о связи DLL? - PullRequest
0 голосов
/ 27 августа 2010

Когда я собираю свое решение Visual C ++ (2005), я получаю следующие предупреждения

1> c: \ winddk \ 7000.0.winmain_win7beta.081212-1400 \ inc \ api \ commctrl.h (678): см. предыдущее определение 'ImageList_Read'

1> e: \ xml parse \ development \ gui \ h \ wtl4mfc.h (6): предупреждение C4273: 'ImageList_Write': несовместимая связь dll

1> c: \ winddk \ 7000.0.winmain_win7beta.081212-1400 \ inc \ api \ commctrl.h (679): см. Предыдущее определение 'ImageList_Write'

1> e: \ xml parse \ development \gui \ h \ wtl4mfc.h (8): предупреждение C4273: 'ImageList_ReadEx': несогласованная связь dll

1> c: \ winddk \ 7000.0.winmain_win7beta.081212-1400 \ inc \ api \ commctrl.h (686): см. Предыдущее определение «ImageList_ReadEx»

1> e: \ xml parse \ development \ gui \ h \ wtl4mfc.h (9): предупреждение C4273: «ImageList_WriteEx»: несогласованная связь dll

1> c: \ winddk \ 7000.0.winmain_win7beta.081212-1400 \ inc \ api \ commctrl.h (687): см. Предыдущее определение 'ImageList_WriteEx'

Когда я проверялэти два файла, я вижу следующее:

**** В 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 (DWORD dwFlags, LPSTREAM pstm, REFIID * pid, PVID RID, PVID, RIDIID RID, PVID, RID, PVIDHRESULT WINAPI ImageList_WriteEx (HIMAGELIST himl, DWORD dwFlags, LPSTREAM pstm);

# endif};

В файле commctrl.h я вижу следующее:

WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Read (__ в структуре IStream * pstm);WINCOMMCTRLAPI BOOL WINAPI ImageList_Write (__ в HIMAGELIST himl, __in struct IStream * pstm);

Я новичок в Visual C ++, и это из кода, который я могу поддерживать.Как я могу удалить эти предупреждения?Эти предупреждения не отображаются, если я создаю код, в котором установлена ​​более низкая версия Winddk.

Что вызывает эти предупреждения?Как я могу их удалить?

1 Ответ

0 голосов
/ 27 августа 2010

Это предупреждение приходит из-за наличия двух объявлений, которые имеют разные __declspec. Я ожидаю, что WINCOMMCTRLAPI скрывает атрибут __declspec.

Чтобы исправить это, сначала убедитесь, что вам нужно включить оба этих объявления - возможно, разные исходные файлы ошибочно выбирают разные пути включения? Или напрямую, включая старую версию? Во-вторых, проверьте, есть ли в вашей сборке определенный макрос, который влияет на расширение WINCOMMCTRLAPI. Может быть, есть неправильная настройка проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...