VC程序调用MATCOM导致进程不自动结束的解决办法


MATCOM的功能很强大,利用它可以大大减少开发含有数值计算,图像显示等方面的程序的时间。虽然它后来被MATLAB收购了,但是我一直青睐使用它来实现MATLAB和VC的混合编程,因为现在的MATLAB让我很恼火。原因在于:现在要想把M文件或者M函数或者GUI程序让VC可以调用的话,哪怕你要转换的代码只有几行,也要带上MATLAB提供的两三百兆的MCR(个人感觉,类似于VC里面的.Net Framework)!当然,我没有用过COM,不知道VC调用MATLAB生成的COM组件需不需要MCR的支持,如果有谁用过的话,欢迎留言指教。
       我现在喜欢采用的混合编程方法有
(1)直接读懂MATLAB代码,人工将它翻译成C++代码。评价:这种方法对于一些轻量级的函数还是可以实现的,但是如果函数A调用函数B,函数B调用函数C,C又调用函数D……的话,就晕菜啦!!!
(2)用MATCOM将M代码翻译成C++代码。评价:这种办法也只适合处理不太复杂的代码,对于多次函数调用的话,还是比较麻烦的。而且,这种方法需要MATCOM的支持,而一般用的MATCOM都是D版的,这对于开发商业软件来说,不好不好。

       好了,言归正传,VC程序调用MATCOM导致进程不自动结束的解决办法是:
(1)对于建立的基于对话框的MFC程序,响应WM_CLOSE消息,在OnClose() 函数里面添加如下代码即可解决进程不能自动结束的问题。
 HANDLE hProcess;
 hProcess = OpenProcess( PROCESS_TERMINATE, true, GetCurrentProcessId() );
TerminateProcess( hProcess, (DWORD) -1 );
CloseHandle( hProcess );
(2)对于基于文档/视图的MFC程序,则在MainFrame的析构函数中加入上述代码。

转载地址:http://blog.sina.com.cn/s/blog_4b2b2d980100j8q5.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值