CImageList 和 CBitmap api 的 VS2012 链接错误

Linking errors on VS2012 for CImageList and CBitmap apis

我在我的项目中使用 mfc class CImageList 并使用它的 API,如 Add()、Create() 等。它在 vs2010 上运行良好。 现在,我正在将项目升级到vs2012。它在 32 位平台上可以很好地编译和链接,但是在 64 位平台上会抛出以下链接错误。

File1.obj:错误 LNK2019:未解析的外部符号 imp_ImageList_ReplaceIcon 在函数 "public: int __cdecl CImageList::Add(struct HICON *)"

中引用

File2.obj:错误 LNK2019:未解析的外部符号 __imp_ImageList_AddMasked 在函数 "public: int __cdecl CImageList::Add(class CBitmap *,unsigned long)"

中引用

同样,调用CBitmap时抛出以下错误api。

File2.obj:错误 LNK2019:未解析的外部符号 __imp_CreateMappedBitmap 在函数 "public: int __cdecl CBitmap::LoadMappedBitmap(unsigned int,unsigned int,struct _COLORMAP *,int)"

中引用

似乎具有这些实现的库可能已更改。但是,我找不到任何关于如何解决它们的线索。

终于找到这个错误的原因了。

ImageList_ReplaceIcon & CreateMappedBitmap 符号出现在 comctl32.lib.
在我的项目设置的附加包含目录中包含的路径中存在旧版本 comctl32.lib。

因此,链接器不是从 Microsoft SDK 文件夹中选择这个库,而是从这个目录中选择,因此导致了问题。