2012-03-08 120 views
0

我有一個MFC應用程序。它具有包含某些數據對象的CMap的,地圖被聲明爲CMap<DWORDLONG, DWORDLONG,_ItemsObj*,_ItemsObj*>其中_ItemsObj是包含各種數據的結構。CMap的查找失敗

我現在面臨的問題是,當我嘗試搜索條目在x64構建Lookup方法意外失敗(且僅在64位版本)。

下面是我使用

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

現在這個工程完全在我的應用程序的32位編譯的代碼。然而在x64建立查找總是失敗,即使項目出現在地圖上,我尋找的關鍵是存在於地圖上。我認爲它與構建配置問題有點相關,我檢查了鏈接屬性併爲應用程序項目的x86和x64選項構建了配置,並且它們使用除目標機器選項之外完全相同的配置(這應該是不同的)。

有人可以幫我解決這個問題,我一直在尋找所有在互聯網上的一個解決方案,但沒有找到任何東西。

哦,我使用VS 2010 SP1

問候

+0

嘗試尋找到CMap.Lookup源......也許有一些神奇的存在,禁用它在正常工作你的情況。 – 2012-03-11 15:35:05

+0

不能訪問sorce ..對不起,我試過了... – 2012-03-11 16:24:32

回答

1

有五個CMap的,分欄列表和CARRAY使用全局輔助功能。他們是CompareElements,CopyElements,DumpElements,HashKey和SerializeElements。您的問題很可能是使用CMap用來存儲集合元素的SerializeElements。 的另一件事是嘗試宣告你的CMap作爲 的CMap < DWORDLONG,DWORDLONG,_ItemsObj,_ItemsObj *>