【发布时间】:2015-05-21 08:14:08
【问题描述】:
我在我的项目中使用 mfc 类 CImageList 并使用它的 API,如 Add()、Create() 等。它适用于 vs2010。 现在,我正在将项目升级到 vs2012。它在 32 位平台上编译和链接正常,但在 64 位平台下会抛出以下链接错误。
File1.obj : error LNK2019: unresolved external symbol imp_ImageList_ReplaceIcon 在函数“public: int __cdecl CImageList::Add(struct HICON *)”中引用
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
似乎具有这些实现的库可能已更改。但是,我找不到任何关于如何解决它们的线索。
【问题讨论】:
-
您是否要编译 MFC?链接器错误似乎出现在 MFC 方法上,而不是您的代码上。或者 File1.cpp 是否包含 CImageList 的 MFC 源的副本?
-
File1.cpp 包含对 MFC API 的调用。下面是我的代码的 sn-p。 CImageList m_imgList; m_imgList.Create(16, 16, ILC_MASK, 4,4); m_imgList.Add(AfxGetApp()->LoadIcon(ID_ICON_UNCHECKED)); m_imgList.Add(AfxGetApp()->LoadIcon(ID_ICON_CHECKED)); m_ListCtrl.SetImageList(&m_imgList, LVSIL_STATE | LVSIL_NORMAL);
-
语句出现链接错误:“m_imgList.Add(AfxGetApp()->LoadIcon(ID_ICON_UNCHECKED));”。它为 32 位平台正确链接。