当前位置: 代码迷 >> VC/MFC >> 苦闷 mfc90d.dll!CTreeCtrl:DeleteAllItems()报内存访问冲突
  详细解决方案

苦闷 mfc90d.dll!CTreeCtrl:DeleteAllItems()报内存访问冲突

热度:333   发布时间:2016-05-02 03:31:16.0
郁闷 mfc90d.dll!CTreeCtrl::DeleteAllItems()报内存访问冲突
vc2008的编译器,原来代码在32位操作系统上运行,一切正常。移植到64位的win7上,编译为64位的EXE文件,结果运行的时候,MFC自身的CTreeCtrl都有问题了。

DEBUG报错文件为afxcmn.inl(vc自带的文件),报错行的内容为
_AFXCMN_INLINE BOOL CTreeCtrl::DeleteAllItems()
{ ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT); }

报错内容为
MultiParentTree.exe 中的 0x3f9a6b40 处未处理的异常: 0xC0000005: 在位置 0x000000003f9a6b40 发生访问冲突

此时的堆栈为
000000003f9a6b40()
 user32.dll!0000000076679bd1() 
[下面的框架可能不正确和/或缺失,没有为 user32.dll 加载符号]
 user32.dll!0000000076676aa8() 
 user32.dll!000000007666d398() 
>mfc90d.dll!CTreeCtrl::DeleteAllItems()  行273 + 0x52 字节 C++
 MultiParentTree.exe!CNodeDialog::PopulateCombo()  行157 + 0xa 字节 C++

请各位老鸟指教。
顺便感叹下CSDN的论坛,做得也够烂的。
------解决思路----------------------
好像就是对windows下的那些dll,ocx重新regsvr32一次,可能可以解决问题
------解决思路----------------------
这个先看看能不能给编译器打一下补丁等,然后再重新编译。