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

来源:互联网 发布:cookie json 编辑:程序博客网 时间:2024/06/05 05:26
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
原创粉丝点击