matlab与vc混合编程指导书.doc,vc与matlab混合编程—基于com.doc

41528d3028836879cd698677c3999917.gifvc与matlab混合编程—基于com.doc

VC与MATLAB混合编程基于COM2010年03月21日星期日1118注意旨在提供一份VC调用MATLAB的快速试验参考和一些实际经验,不保证所有内容都完全正确,一些叙述(特别是关于COM)也不太规范,欢迎大家批评指正。本文讨论使用MATLABCOMBUILDER从M文件生成COM组件,并在MFC应用程序中调用的基本步骤,程序的发布,以及一些注意事项。开发环境WINDOWSXPPROSP3VC60SP6MATLAB65步骤1)检查VC相关环境变量安装VC60的过程中,有一个“REGISTERENVIRONMENTVARIABLE”选项。如果你已经勾选了这一项,可以跳过本步骤;如果没有,请按照C\PROGRAMFILES\MICROSOFTVISUALSTUDIO\VC98\BIN\VCVARS32BAT设置环境变量。2)为VC的INCLUDE和LIB文件查找目录添加MATLAB项目3)设置MATLAB与VC编译器关联打开MATLAB,执行带“–SETUP”选项的MBUILD和MEX,选择VC60COMPILER作为默认的编译器。4)编写M文件,使用MATLABCOMBUILDER生成COM组件作为简单的演示,新建D\MATLAB6P5\WORK\TESTM,内容如下FUNCTIONTESTX100110YSINXFIGURE VISIBLE , OFF SETGCF, MENUBAR , NONE PLOTX,YFIGURE1调用TEST将显示SIN在10,10区间的曲线以结束的语句是为了消除闪烁,这个在最后在VC中调用时还是看得出效果的,可以再验证一下。在MATLAB命令提示符下输入COMTOOL打开MATLABCOMBUILDER,新建工程COMTEST,设置右图所示在“COMPILEROPTIONS”中,第一项是必需的,因为我们使用了图形相关的函数,后面的两项无所谓。点击“OK”,然后将前面编写的TESTM添加到工程中,点击“BUILD“进行编译。5)使用OLEVIEW生成COM组件的接口定义文件如果一切顺利的话(但愿如此☺),会在工程目录下生成很多文件。不过,只有D\MATLAB6P5\WORK\COMTEST\DISTRIB\COMTEST_1_0DLL才是我们唯一需要关心的。从“开始”“MICROSOFTVISUALC60”“MICROSOFTVISUALC60TOOLS”找到“OLEVIEW”,点击打开以后从左侧的“TYPELIBRARIES”下找到“COMTEST10TYPELIBRARY”,双击打开此节点后分别保存为H和C文件。有了COMTEST_1_0DLL,COMTEST_1_0H和COMTEST_1_0C,我们就可以在VC中使用COMTEST组件了。注意这一步能否成功和步骤1)和2)有很大关系,所以如果出错,很可能是因为它们没有被正确配置。6)在MFC应用程序中调用COM组件请看代码//COMBUILDERTESTDLGCPPIMPLEMENTATIONFILEINCLUDE“STDAFXH“INCLUDE“COMBUILDERTESTH“INCLUDE“COMBUILDERTESTDLGH“IMPORT“MWCOMUTILDLL“IMPORT“MATLAB/COMTEST_1_0DLL“INCLUDEINCLUDE“MATLAB/COMTEST_1_0H“VOIDCCOMBUILDERTESTDLGONBTNCOMTEST{IPLOTSINPINSTIFFAILEDCOINITIALIZENULL{AFXMESSAGEBOX“COINITIALIZEFAILED“RETURN}HRESULTHRCOCREATEINSTANCECLSID_PLOTSIN,NULL,CLSCTX_ALL,IID_IPLOTSIN,VOIDIFSUCCEEDEDHR{HRPINSTTESTPINSTRELEASE//不需要PINST了}ELSE{AFXMESSAGEBOX“COCREATEINSTANCEFAILED“RETURN}//窗口嵌入HWNDHFIGUREFINDWINDOWNULL,“FIGURENO1“IFHFIGURE{M_PWNDFIGURECWNDFROMHANDLEHFIGUREASSERTM_PWNDFIGUREM_PWNDFIGURESETPARENTTHISM_PWNDFIGUREMODIFYSTYLEWS_CAPTION|WS_BORDER,WS_MAXIMIZE,0CRECTRTGETCLIENTRECTM_PWNDFIGUREMOVEWINDOW0,0,RTWIDTH,RTHEIGHT,TRUEM_PWNDFIGURESETWINDOWPOS}COUNINITIALIZE//一定要调用这个,否则图像出不来。。。}VOIDCCOMBUILDERTESTDLGONCLOSE{//退出前关闭FIGURE窗口,否则进程无法结束IFM_PWNDFIGURE{POSTMESSAGEM_PWNDFIGUREGETSAFEHWND,WM_CLOSE,0,0COUNINITIALIZE}CDIALOGONCLOSE}使用了FINDWINDOW、CWNDSETPARENT等将COMTEST组件创建的FIGURE窗口嵌入到程序窗体中,虽然不是很完美(如果你有更好的方法,谢谢通知我)。注意在程序结束前要关闭FIGURE窗口,否则将导致进程无法结束。程序截图如下注意事项再次声明一下,VC相关的环境变量设置很重要,我是在这上面栽了跟头的/。另外,(在这个例子中)一定要记得调用COUNINITIALIZE,否则SIN图像出不来。如果你知道为什么,谢谢通知我。发布几乎也是傻瓜式的。COMTOOL中有个“PACKAGECOMPONENT”命令,执行可以得到一个自解压文件,在客户计算机执行并按照提示操作就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值