在VS2012上为CImageList和CBitmap api链接错误

时间:2015-03-18 13:48:51

标签: visual-studio-2012 mfc

我在我的项目中使用mfc类CImageList并使用其Add(),Create()等API。它可以与vs2010一起使用。 现在,我正在将项目升级到vs2012。它为32位平台编译和链接很好,但是在64位的链接错误之下抛出。

File1.obj:错误LNK2019:函数“public:int __cdecl CImageList :: Add(struct HICON *)”

中引用了未解析的外部符号 imp_ImageList_ReplaceIcon

File2.obj:错误LNK2019:函数“public:int __cdecl CImageList :: Add(class CBitmap *,unsigned long)”中引用了未解析的外部符号__imp_ImageList_AddMasked“

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

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

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

1 个答案:

答案 0 :(得分:1)

最后找出了这个错误的原因。

ImageList_ReplaceIcon& ComMapl32.lib中存在CreateMappedBitmap符号 在我的项目设置的其他包含目录中包含的路径中存在旧版本的comctl32.lib。

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