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一次,可能可以解决问题
------解决思路----------------------
这个先看看能不能给编译器打一下补丁等,然后再重新编译。