我在我的项目中使用mfc类CImageList并使用其Add(),Create()等API。它可以与vs2010一起使用。 现在,我正在将项目升级到vs2012。它为32位平台编译和链接很好,但是在64位的链接错误之下抛出。
File1.obj:错误LNK2019:函数“public:int __cdecl CImageList :: Add(struct HICON *)”
中引用了未解析的外部符号 imp_ImageList_ReplaceIconFile2.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“
似乎已经更改了具有这些实现的库。但是,我找不到任何关于如何解决它们的线索。
答案 0 :(得分:1)
最后找出了这个错误的原因。
ImageList_ReplaceIcon& ComMapl32.lib中存在CreateMappedBitmap符号 在我的项目设置的其他包含目录中包含的路径中存在旧版本的comctl32.lib。
因此,链接器不是从Microsoft SDK文件夹中选择此lib,而是从此目录中挑选,从而导致问题。