浅析VC与Matlab联合编程

2016-01-29 12:26 11 1 收藏

浅析VC与Matlab联合编程,浅析VC与Matlab联合编程

【 tulaoshi.com - C语言心得技巧 】

浅析VC与Matlab联合编程<三>

作者:邓科

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

  在“浅析VC与Matlab联合编程<一”和“浅析VC与Matlab联合编程<二”中介绍了matcom,这个工具可以将用matlab写的m文件翻译成C++文件,或者是可执行文件(exe)或库文件(dll)。但是matcom在很多方面也有限制,比如,对struct等类的支持有缺陷,部分绘图语句无法实现或得不到准确图象,尤其是三维图象。
  实际上VC与matlab的接口实现方法有很多种,matcom只是其中一种,本文再介绍一种比较容易实现的方法:COM接口方法。COM(Compponent Object Model组件对象模型)是一项比较复杂的技术,详细讲的话几本书也讲不完,所以在这里不作介绍,本文通过一个例子详细介绍如何在matlab下做COM组件,以及如何在VC中调用COM组件。
  首先在Matlab编辑器里编辑m函数文件:启动matlab->File->New->M-file函数内容如图1:该函数无输入输出参数,文件保存为huatu.m。


图1 m函数huatu.m

在matlab下建立COM组件,步骤如下:
1、在matlab command window 输入如下命令:
>> comtool
出现com编辑界面,如图2:


图2 com组件编辑界面

2、新建工程:File->New Project…,如图3。

图2 com组件属性设置

3、设置组件属性,在"Component name"项中填写组件名称"component",这时候会自动生成类"component",在"Class name"项中填写类名称"huatu",如图4,

图4 com组件属性设置1

  为了便于区分,选中"Classes"中的"component",点击“remove”按钮,将类component移除,再点击"Add>>"添加新类huatu,结果如图5。点击"OK",接下来出现一个对话框,选择"Yes".

图5 com组件属性设置2

4. 添加文件:选中左边工作区的"huatu",点击Project->Add File…,选择已经编辑好的函数文件huatu.m,如图6。需要注意的是m文件必须是m函数,否则会报错,如果是m脚本文件的话,只需要改为无输入输出参数的m函数即可。

图6 添加m文件

5、生成 com组件:点击Build->COM Object…,结果如图7。

图7

com组件已经由matlab做好,默认的保存位置为:matlab安装位置workcomponent。

VC中调用COM组件,步骤如下:
1、在VC中建立名为ComHuaTu的基于对话框的MFC(exe)。
2、面板上添加一个名为“画图”的button按钮,如图8。


图7 工程界面

3、将component_idl.h 和component_idl_i.c文件拷贝到VC建立的工程ComHuaTu目录下。两文件默认目录为workcomponentsrc
4、将上面两文件加入工程:工程->添加工程->Files,选择刚刚拷到目录下的component_idl.h 和component_idl_i.c文件。
5、将目录/extern/include/下的mwcomtypes.h拷贝到工程ComHuaTu目录下,并加入到工程中,方法同上。
6、为程序添加头文件component_idl.h 、component_idl_i.c和mwcomtypes.h,结果如图9

图9 添加头文件


7、按钮画图函数添加代码:

图10 添加按钮函数代码

函数代码的意义涉及到COM,正在

来源:http://www.tulaoshi.com/n/20160129/1486061.html

延伸阅读
首先必须初始化网络,可以在app的InitInstance()中用AfxSocketInit()或者直接用 WSAStartup( MAKEWORD(1,1),&wsaData) WORD wVersionRequested WSADATA 初始化 winsock WSACleanUp 然后是初始化套接字的方法,有tcp和udp两种tcp下: SOCKET(AF_INET,SOCK_STREAM,0) bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR));//同下面的代...
标签: Web开发
Java Server Page(JSP)作为建立动态网页的技术正在不断升温。JSP和ASP、PHP、工作机制不太一样。一般说来,JSP页面在执行时是编译式,而不是解释式的。首次调用JSP文件其实是执行一个编译为Servlet的过程。当浏览器向服务器请求这一个JSP文件的时候,服务器将检查自上次编译后JSP文件是否有改变,如果没有改变,就直接执行Servlet,而不...
一、打开CD-ROM mciSendString("Set cdAudio door open wait",NULL,0,NULL); 二、关闭CD_ROM mciSendString("Set cdAudio door closed wait",NULL,0,NULL); 三、关闭计算机 OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构 OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&OsVersionInf...
1. 如何提取部分网页数据 a. 使用IHTMLDocument2的getElementByTagName,不过你需要IWebBrowser2这个组件来加载网页 b. IXMLHTTPRequest读取网页数据,存入CString,再根据标查找 2. 我需要在固定时间提取网页上的相关信息. 例如:今日油假:4.90元/升 IWebBrowse2 得到IHTMLDocument2指针, IHTMLDocument2指针得到IHTMLElementCollection, ...
首先建议读者明白网络、IP地址、协议等概念。应用层协议TeLnet,FTP,HTTP,DNS,SMTP,POP3等。传输层协议TCP(面向连接、可靠),UDP(无连接不可靠)。UDP实时性好,故广泛使用.网络层协议IP,ICMP(互联网控制报文协议),IGMP(Internet组管理协议). 数据封装:每一层都会加上自己的信息头或者称为协议头.有的层也会加入尾部.传输可以看成为一个在发送端...

经验教程

278

收藏

22
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部