【问题标题】:CMap lookup failingCMap 查找失败
【发布时间】:2012-03-25 18:05:25
【问题描述】:

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

我面临的问题是,当我尝试搜索条目时,查找方法在 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

问候

【问题讨论】:

  • 尝试查看 CMap.Lookup 源...也许那里有一些魔法可以使它在您的情况下无法正常工作。
  • 无法访问 sorce.. 抱歉,我试过了...

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


【解决方案1】:

CMap、CList 和 CArray 使用了五个全局辅助函数。它们是 CompareElements、CopyElements、DumpElements、HashKey 和 SerializeElements。您的问题可能与 CMap 用于存储集合元素的 SerializeElements 有关。 要尝试的另一件事是将您的 CMap 声明为 CMap

【讨论】:

    猜你喜欢
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 2013-06-29
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多