我用matcom将我需要的 用matlab编的绘图程序 转换成c++语言,然后将生成的.cpp源代码拷到我的MFC按钮响应函数下(同时将v4501v.lib和matlib.h 添加到工程里,工程文件下还有v4501v.dll文件):#include "matlib.h"UINT CFilterDlg::ShowgraphThread(void *param)
{
CFilterDlg *dlg=(CFilterDlg *) param;
dlg->GetParent();
dlg->ShowInfo("正在作图,请稍后...",0); initM(MATCOM_VERSION);
//生成的cpp源码
dMm(err);
#line 1 "c:/matcom45/ff.m"
call_stack_begin;
#line 1 "c:/matcom45/ff.m"
#line 3 "c:/matcom45/ff.m"
_ load(TM("SimulinkData.dat"),(CL(err)));
#line 4 "c:/matcom45/ff.m"
_ display(figure());
#line 5 "c:/matcom45/ff.m"
_ display( subplot(2.0,4.0,1.0) );
#line 5 "c:/matcom45/ff.m"
_ display( plot((CL(err(c_p,1.0)))) );
#line 5 "c:/matcom45/ff.m"
_ display( title((CL(TM("角度")))) );
#line 5 "c:/matcom45/ff.m"
_ display( xlabel((CL(TM("s")))) );
#line 5 "c:/matcom45/ff.m"
_ display( ylabel((CL(TM("分")))) );
#line 5 "c:/matcom45/ff.m"
_ display(grid());
call_stack_end;
dlg->ShowInfo("作图完成",0); exitM();
return 0; }
程序能运行正常,但是每次退出后发现任务管理器里还有进程,总是得手动清除,狂郁闷
求助高手!
谢谢!
{
CFilterDlg *dlg=(CFilterDlg *) param;
dlg->GetParent();
dlg->ShowInfo("正在作图,请稍后...",0); initM(MATCOM_VERSION);
//生成的cpp源码
dMm(err);
#line 1 "c:/matcom45/ff.m"
call_stack_begin;
#line 1 "c:/matcom45/ff.m"
#line 3 "c:/matcom45/ff.m"
_ load(TM("SimulinkData.dat"),(CL(err)));
#line 4 "c:/matcom45/ff.m"
_ display(figure());
#line 5 "c:/matcom45/ff.m"
_ display( subplot(2.0,4.0,1.0) );
#line 5 "c:/matcom45/ff.m"
_ display( plot((CL(err(c_p,1.0)))) );
#line 5 "c:/matcom45/ff.m"
_ display( title((CL(TM("角度")))) );
#line 5 "c:/matcom45/ff.m"
_ display( xlabel((CL(TM("s")))) );
#line 5 "c:/matcom45/ff.m"
_ display( ylabel((CL(TM("分")))) );
#line 5 "c:/matcom45/ff.m"
_ display(grid());
call_stack_end;
dlg->ShowInfo("作图完成",0); exitM();
return 0; }
程序能运行正常,但是每次退出后发现任务管理器里还有进程,总是得手动清除,狂郁闷
求助高手!
谢谢!
debug调试下退出程序后,但扔处在debug模式下,用break发现程序停在:
7C92EB94 ret //这里
7C92EB95 lea esp,[esp]
7C92EB9C lea esp,[esp]
7C92EBA0 nop
7C92EBA1 nop
7C92EBA2 nop
7C92EBA3 nop
7C92EBA4 nop
7C92EBA5 lea edx,[esp+8]下面得Context内容显示:NTDLL!7c92eb94();此时若继续按一下F5,程序才退出debug模式。求助~感激加分!
根据汇编来看,应该处于系统的自动清理过程中,不过这段汇编没有更详细的信息,因为全是nop和lea
这很正常
碰到过楼主这样的情况
后来不知道怎么又好了
根据汇编来看,应该处于系统的自动清理过程中,不过这段汇编没有更详细的信息,因为全是nop和lea------------
下面这些是debug单步模式下卡住后用break时调用call stack得到的内容:
NTDLL! 7c92eb94()
USER32! 77d195f9()
USER32! 77d196a8()
AGO4501! 26dc0f37()
AGO4501! 26db8430()
AGO4501! 26db81c5()
AGO4501! 26db39c5()
AGO4501! 26f009a1()
AGO4501! 26d010b2()
NTDLL! 7c943f31()
KERNEL32! 7c81cd76()
KERNEL32! 7c81cdee()
doexit(int 0, int 0, int 0) line 392
exit(int 0) line 279 + 13 bytes
WinMainCRTStartup() line 345
KERNEL32! 7c816fd7()
不知道这些信息可行?谢谢!确实,估计你启了mat的engine,你必须手动地关。
这很正常
---------
请问该怎么手动关呢?谢谢!谢谢以上回复的各位!
谢谢!
要在Oncancel或destroy里添加什么吗?
我用Postquitmessage不行
---
请问该怎么退出呢?谢谢了!网上有人说加 winaxes(m_hWnd) 这句话就可以了,但是我加了后程序反而不能运行了,有错误产生。希望能得到各位老手高手们进一步的帮助,谢谢!
我也出现了这个问题,加入matcom编译后的一些文件后,就出现楼主的问题。怎么解决呀?如何结束mat 的线程?