CMap查找失败

时间:2012-03-08 08:10:45

标签: windows visual-studio visual-c++ mfc

我有一个MFC应用程序。它有一个包含某些数据对象的CMap,该地图被声明为CMap<DWORDLONG, DWORDLONG,_ItemsObj*,_ItemsObj*>,其中_ItemsObj是一个包含各种数据的结构。

我面临的问题是,当我尝试搜索条目时,Lookup方法在x64版本上意外失败(仅在x64版本上)。

这是我正在使用的代码

BOOL IsItemExist(DWORDLONG dwid)
{_ItemsObj* pObj=NULL;
if(!m_Itemsmap.Lookup(dwid,pObj))
{return FALSE;}
return TRUE;
}

现在,这完全适用于我的应用程序的32位版本。但是在x64版本中,即使项目存在于地图中,Lookup也总是失败,而我正在寻找的关键字存在于地图中。

我认为它与构建配置问题有些相关,我已经检查了应用项目的x86和x64选项的链接属性和构建配置,并且它们使用完全相同的配置,但目标机器选项除外(应该是不同的。)

有人可以帮我解决这个问题,我一直在互联网上找一个解决方案但找不到任何东西。

哦,我正在使用VS 2010 SP1

此致

1 个答案:

答案 0 :(得分:1)

CMap,CList和CArray使用五种全局帮助函数。它们是CompareElements,CopyElements,DumpElements,HashKey和SerializeElements。 CMap用来存储集合元素的SerializeElements可能会出现问题。 另一件要尝试的是将你的CMap声明为 CMap&lt; DWORDLONG,DWORDLONG,_ItemsObj,_ItemsObj *&gt;