windows - CMap lookup fejler

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en MFC-applikation. Det har en CMap, der indeholder visse dataobjekter, kortet er angivet som CMap<DWORDLONG, DWORDLONG,\_ItemsObj*,\_ItemsObj*>, hvor \_ItemsObj er en struktur, der indeholder forskellige data.


Problemet jeg står over for er, at når jeg forsøger at søge efter en post, fejler Lookup-metoden uventet på x64-builds (og KUN på x64-builds).


Her er koden jeg bruger


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


Nu fungerer dette perfekt på en 32-bit build af min ansøgning. Men på en x64-build fejler altid Opslaget, selvom varerne er til stede på kortet, og nøglen jeg søger er til stede på kortet.


Jeg synes, at det er noget relateret til et build-konfigurationsproblem, jeg har tjekket linkingsegenskaberne og opbygget konfiguration for både x86 og x64-indstillingen til app-projektet, og de bruger nøjagtig samme konfiguration med undtagelse af målmaskine-indstillingen (som skal være anderledes ).


Kan nogen hjælpe mig med at løse dette, jeg har set over internettet til en løsning, men kunne ikke finde noget.


Åh, og jeg bruger VS 2010 SP1


Hilsen

Bedste reference


Der er fem globale hjælperfunktioner, som CMap, CList og CArray bruger. De er SammenlignElements, CopyElements, DumpElements, HashKey og SerializeElements. Dit problem er sandsynligt med SerializeElements, som CMap bruger til at gemme samlingselement.
Den anden ting at prøve er at erklære din CMap som
CMap < DWORDLONG, DWORDLONG, \_ItemsObj, \_ItemsObj *>