【貌似是内存回收问题】MFC 里的 一个函数 COleDispatchDriver::InvokeHelperV 为啥系统函数也会报错?

灵魂火焰 2015-12-25 12:04:44
---------------------------
Microsoft Visual C++
---------------------------
User breakpoint called from code at 0x770256bc
---------------------------
确定
---------------------------

是因为pvarResult没有初始化造成的吗?pvarResult是mfc源文件里的 参数 该怎么解决呢?
-----------------------------------------------
说一下我的环境,任务是要将老的XP程序迁移到win7下运行
所以开发环境是Win7(32)+VC6.0
程序用到了 formulaone6.1 表格控件
Roll1程序与其他进程之间有管道连接

堆栈信息如下:
NTDLL! 77026d9c()
NTDLL! 76fe93f1()
OLE32! 765b625c()
OLEAUT32! 7678443a()
OLEAUT32! 76783ea3()
TTF16! 1008160b()
TTF16! 10082c4d()
TTF16! 10089576()
TTF16! 1008e2be()
COleDispatchDriver::InvokeHelperV(long 116, unsigned short 1, unsigned short 0, void * 0x00000000, const unsigned char * 0x005391ec, char * 0x00121004) line 345 + 54 bytes
COleControlSite::InvokeHelperV(long 116, unsigned short 1, unsigned short 0, void * 0x00000000, const unsigned char * 0x005391ec, char * 0x00120fe0) line 976
CWnd::InvokeHelper(CWnd * const 0x002b17f0 {CMF1Book hWnd=???}, long 116, unsigned short 1, unsigned short 0, void * 0x00000000) line 354
CF1Book::GetFont(unsigned short * * 0x002b15d4, short * 0x002b15d0, int * 0x002b15cc, int * 0x002b15c8, int * 0x002b15c4, int * 0x002b15c0, long * 0x002b15bc, int * 0x002b15b8, int * 0x002b15b4) line 2357 + 58 bytes
CRoll1View::LPDialog() line 1618
CRoll1View::OnCommand(unsigned int 113, long 0) line 602
CWnd::OnWndMsg(unsigned int 273, unsigned int 113, long 0, long * 0x0012fcbc) line 1608 + 28 bytes
CWnd::WindowProc(unsigned int 273, unsigned int 113, long 0) line 1596 + 30 bytes
AfxCallWndProc(CWnd * 0x002b1508 {CRoll1View hWnd=???}, HWND__ * 0x000a086c, unsigned int 273, unsigned int 113, long 0) line 215 + 26 bytes
AfxWndProc(HWND__ * 0x000a086c, unsigned int 273, unsigned int 113, long 0) line 379
USER32! 761dc4e7()
...
===========================
其中 COleDispatchDriver::InvokeHelperV(long 116, unsigned short 1, unsigned short 0, void * 0x00000000, const unsigned char * 0x005391ec, char * 0x00121004) line 345 + 54 bytes
在MFC的源文件 OLEDISP2.CPP 中

报错入口行如下:
SCODE sc = m_lpDispatch->Invoke(dwDispID, IID_NULL, 0, wFlags,
&dispparams, pvarResult, &excepInfo, &nArgErr);

当时的参数值如下:
--------------------------------------
dwDispID 116
--------------------------------------
IID_NULL GUID_NULL
--------------------------------------
wFlags 1
--------------------------------------
- dispparams {...}
+ rgvarg 0x002b5e98 {True VT_BOOL|VT_BYREF}
+ rgdispidNamedArgs 0x00000000
cArgs 9
cNamedArgs 0
--------------------------------------
- pvarResult 0x00000000 {???}
vt CXX0030: Error: expression cannot be evaluated
wReserved1 CXX0030: Error: expression cannot be evaluated
wReserved2 CXX0030: Error: expression cannot be evaluated
wReserved3 CXX0030: Error: expression cannot be evaluated
lVal CXX0030: Error: expression cannot be evaluated
bVal CXX0030: Error: expression cannot be evaluated
---------------------------------------
- excepInfo {...}
wCode 0
wReserved 0
+ bstrSource 0x00000000
+ bstrDescription 0x00000000
+ bstrHelpFile 0x00000000
dwHelpContext 0
pvReserved 0x00000000
pfnDeferredFillIn 0x00000000
scode 0
---------------------------------------
nArgErr 4294967295
---------------------------------------

菜鸟求大神们指点。。
...全文
394 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
灵魂火焰 2015-12-25
  • 打赏
  • 举报
回复
引用 2 楼 oyljerry 的回复:
直接加代码,打印一下参数,查看出错的时候,传入的参数是否有问题
报错的时候就已经进 Disassembly 了,堆栈里最近的一个函数就是 COleDispatchDriver::InvokeHelperV(long 116, unsigned short 1, unsigned short 0, void * 0x00000000, const unsigned char * 0x005391ec, char * 0x00121004); 是每次到这里都会出错。具体参数值得话,上面也打印出来了, 但是我不知道该如何明确这些参数的值是不是对的,比如第四个参数 0x00000000 可不可以呢? 从哪里可以明确出是哪个参数出错了呢? 啊。。刚刚 查了 InvokeHelper(这个API ,挺详细的,我先仔细看看。
oyljerry 2015-12-25
  • 打赏
  • 举报
回复
直接加代码,打印一下参数,查看出错的时候,传入的参数是否有问题
灵魂火焰 2015-12-25
  • 打赏
  • 举报
回复
米有大牛帮我。。。
内容概要:本文系统研究了基于CNN-SVM的卷积神经网络与支持向量机融合的数据分类预测方法,聚焦其在工业故障识别中的应用,提供了完整的Matlab代码实现。通过CNN提取输入数据的深层空间特征,再由SVM进行高精度分类,充分发挥两者优势,有效提升了故障识别的准确性、鲁棒性与泛化能力。该方法特别适用于处理电力系统、机械设备等领域的高维、非线性、强噪声监测数据,在变压器故障诊断、轴承缺陷识别等场景中具有重要应用价值。文档还整合了机器学习、深度学习、图像处理、路径规划、电力系统优化等多个前沿科研方向的技术资源,配套大量Matlab/Simulink仿真案例与Python代码,全面支持科研复现与工程实践。; 适合人群:具备一定编程基础,熟练掌握Matlab或Python语言,从事电气工程、自动化、人工智能、机械故障诊断等相关领域研究的研发人员及高校研究生; 使用场景及目标:① 实现工业设备的状态监测与多类别故障分类;② 深入理解CNN与SVM融合模型的设计原理与工程实现细节;③ 借助所提供的丰富算法案例开展科研复现、模型优化与系统仿真验证; 阅读建议:建议按照文档目录结构系统化学习,结合百度网盘提供的完整代码资源进行动手实践,重点关注CNN特征提取层与SVM分类器之间的数据接口设计与参数调优策略,同时可延伸学习文中涉及的其他智能算法及其在电力系统、信号处理等领域的交叉应用,全面提升科研创新能力。

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧