2012-03-08 4 views
0

MFC 응용 프로그램이 있습니다. 그것은 특정 데이터 개체를 포함하는 CMap을 가지고 있으며, 맵은 CMap<DWORDLONG, DWORDLONG,_ItemsObj*,_ItemsObj*>으로 선언됩니다. 여기서 _ItemsObj는 다양한 데이터를 포함하는 구조입니다.CMap 조회가 실패했습니다.

내가 직면 한 문제는 항목을 검색하려고 할 때 Lookup 메서드가 x64 빌드에서 (그리고 x64 빌드에서만) 예기치 않게 실패한다는 것입니다.

는 여기에 내가

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 소스에보고 시도 ... 어쩌면이 제대로 작동하지 않습니다 거기에 마법이있다 너의 경우. –

+0

캔트가 술에 들어갔다 .. 미안, 시도해 봤어. –

답변

1

CMAP, CLIST 및 CArray가 사용하는 글로벌 5 개 도우미 기능이 있습니다. CompareElements, CopyElements, DumpElements, HashKey 및 SerializeElements입니다. 귀하의 문제는 CMap 컬렉션 요소를 저장하는 데 사용하는 SerializeElements 가능성이 높습니다. 시도하는 다른 것은 CMAP < DWORDLONG, DWORDLONG, _ItemsObj, _ItemsObj로 CMAP을 선언하는 것입니다 *>

관련 문제