2012-03-08 30 views
0

私はMFCアプリケーションを持っています。マップにはCMap<DWORDLONG, DWORDLONG,_ItemsObj*,_ItemsObj*>と宣言されており、_ItemsObjはさまざまなデータを含む構造体です。CMap参照が失敗しました

私が直面している問題は、エントリを検索しようとすると、x64ビルド(およびx64ビルドのみ)でLookupメソッドが予期せず失敗するということです。

は、ここで私は

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を宣言することです*>

関連する問題