2010-08-27 30 views
0

當我建立我的Visual C++解決方案(2005年),我得到以下警告如何刪除'ImageList_Read':不一致的dll連接警告?

1> C:\ WINDDK \ 7000.0.winmain_win7beta.081212-1400 \ INC \ API \ commctrl.h(678):見前面\ XML解析\發展\ GUI \ħ\ wtl4mfc.h(6)::警告C4273: 'ImageList_Write': 'ImageList_Read'

1>電子商務定義不一致的DLL聯動

1> C:\ WINDDK \ 7000.0.winmain_win7beta.081212-1400 \ inc \ api \ commctrl.h(679):參見'ImageList_Write'的先前定義

1> e:\ xml parse \ development \ gui \ h \ wt l4mfc.h(8):警告C4273:'ImageList_ReadEx':不一致的dll連接

1> c:\ winddk \ 7000.0.winmain_win7beta.081212-1400 \ inc \ api \ commctrl.h(686):請參閱上一個定義\ XML解析\發展\ GUI \ħ\ wtl4mfc.h(9)::警告C4273: 'ImageList_WriteEx':不一致的dll聯動

1> C:\ WINDDK \ 'ImageList_ReadEx'

1>電子商務(687):看到'ImageList_WriteEx'的先前定義

當我檢查這兩個文件時,我可以看到以下內容:

****在wtl4mfc.h ****

的extern 「C」 { HIMAGELIST WINAPI ImageList_Read(LPSTREAM PSTM); BOOL WINAPI ImageList_Write(HIMAGELIST himl,LPSTREAM pstm); HRESULT WINAPI ImageList_ReadEx(DWORD dwFlags,LPSTREAM pstm,REFIID riid,PVOID * ppv);以及其中, HRESULT WINAPI ImageList_WriteEx(HIMAGELIST himl,DWORD dwFlags,LPSTREAM pstm);

#endif };

在commctrl.h文件I可以看到如下:

WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Read(__在結構的IStream * PSTM); WINCOMMCTRLAPI BOOL WINAPI ImageList_Write(__ in HIMAGELIST himl,__in struct IStream * pstm);

我是Visual C++的初學者,這是來自我可以維護的代碼。我怎樣才能刪除這些警告?如果在安裝較低版本的Winddk的情況下構建代碼,則不會顯示這些警告。

什麼是造成這些警告?我怎樣才能刪除它們?

回答

0

該警告來自具有兩個具有不同__declspec的聲明。我希望WINCOMMCTRLAPI隱藏一個__declspec屬性。

要解決這個問題,首先檢查是否需要包含這兩個聲明 - 也許不同的源文件錯誤地拾取了不同的包含路徑?或直接包含舊版本?其次檢查是否在您的構建中定義了影響WINCOMMCTRLAPI擴展方式的宏。它可能是有一個項目設置已被設置錯誤。

+0

WINCOMMCTRLAPI擴展爲DECLSPEC_IMPORT。 我更改了項目設置,並從附加包含目錄中刪除了winddk路徑。警告消失了。謝謝 – Techiegirl 2010-08-27 11:52:47