声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3527|回复: 1

[混合编程] matlab的comtool生成的接口

[复制链接]
发表于 2005-10-29 08:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
各位大哥,我用matlab写了一个画图程序,
在matlab中可以出图 huitu(20,0.7,0.5,10,50,250,400,500,2000)
按照一些提示,用comtool编译了一下,做成VC
在弄到要拷贝/extern/include/下的mwcomtypes.h
却没有发现mwcomtypes.h这个文件.
多是按照步骤做的
不知道为什么?
回复
分享到:

使用道具 举报

发表于 2005-10-29 08:53 | 显示全部楼层
转别人的调用经验

.net是微软的发展方向,以后我们开发软件的时候不免会调用一些matlab语言

今晚一直在***图用c#调用matlab,终于成功。

主要思想就是首先把matlab的m函数做成com组件,然后在c#中应用此com组件,即可。

主要步骤如下:
1.建一个m文件(test.m)
例如:
  1. functiontest(h,D)
  2. forx=-10:0.1:10,
  3. ifx>D
  4. y=h;
  5. holdon;
  6. plot(x,y)
  7. elseifx<-D
  8. y=-h;
  9. holdon;
  10. plot(x,y)
  11. else
  12. y=h/(D*x);
  13. holdon;
  14. plot(x,y)
  15. end
  16. end
复制代码

2.在matlab中输入comtool命令,就打开了matlabcombuilder,

点击file-newproject,新建一个工程,

在componentname里输入名字点击ok就行了。

然后点击project--Addfiles,将test.m添加入工程,

然后点Build-ComObject,就会在comtest\distrib\文件夹下生成一个test1_0.dll(它就
是做好的com组件),

Build时matlab已经自动将此dll在注册表中注册

我们还需做一个准备工作,进入/bin/win32目录下(matlabroot为你机器上
matlab安装的路径),打regsvr32mwcomutil.dll,即对mwcomutil.dll进行注册(这个dll
是matlab下作的任何com组件都要用到的dll),下面我们在其他编译器下调用时就可以用了。

3.c#下实现调用

新建一个c#项目(我采用的是vs.net2003),选中右边的解决方案资源管理器中的引用
,点鼠标右键,选添加引用,在弹出来的窗口中选com,然后也找到test_1_0.dll,点选
择,然后确定就可,此时此com组件也添加到工程里面去了,同样我们可以选择

然后编写程序

test.testclassClassst=newtest.testclassClass();
objectm=1,n=2;
st.test(m,n);
即可

然后在c#中就出现了我们所想得到的图形,呵呵
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-28 20:35 , Processed in 0.056248 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表