找回密码
 注册
Simdroid-非首页
查看: 729|回复: 12

[原创] matlab r2006b builder for.net 使用初探

[复制链接]
发表于 2006-10-18 08:09:11 | 显示全部楼层 |阅读模式 来自 新加坡
响应bainhome版主的号召,再来一篇关于builder for .net的介绍,希望能抛砖引玉。

大家可能已经发现,matlab的Builder for COM又改名了,在matlab r2006b中这个产品叫做MATLAB Builder for .NET。在matlab命令行中的命令也变了,以前是comtool,现在则是deploytool。下面就以一个简单的例子,示范一下如何使用新工具MATLAB Builder for .NET来编译一个m函数然后生成COM组件,最后在C++程序中使用该COM组件。用到的例子是《深入浅出MATLAB7.x混合编程》第8章的第一个例子myadd.m。

在正式开始之前先来强调一下这个帖子用到的工具及其版本,也就是我们的试验环境:
Windows 2003 Server Std
MATLAB R2006B
Microsoft Visual Studio 2005

首先来看看MATLAB Builder for .NET的启动和界面,相应的matlab命令是“deploytool”。界面如图。请注意,如果你是第一次运行deploytool,那么界面可能是嵌入到你的matlab工作桌面窗口,反正我测试的时候是那样的,我是点击deploytool窗口的右上角的“dock”按钮然后把它拿出来的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

 楼主| 发表于 2006-10-18 08:18:13 | 显示全部楼层 来自 新加坡
Simdroid开发平台
我们试验的第一步就是先来编译一个COM组件,为此,首先创建需要的m函数,打开你熟悉的编辑器,把下面代码保存为myadd.m

  1. function y = myadd(a, b)
  2. y = a+b;
  3. end
复制代码


然后在deploytool的窗口上,创建一个新的工程,具体步骤是首先点击deploytool窗口的工具栏里的如上图所示的按钮,然后我们将会看到关于新工程的对话框,如下图所示。

填写相关的内容。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

 楼主| 发表于 2006-10-18 08:19:54 | 显示全部楼层 来自 新加坡
接下来给这个工程添加文件,点击如图所示的按钮并且选择刚才保存的文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

 楼主| 发表于 2006-10-18 08:21:52 | 显示全部楼层 来自 新加坡
保存工程,如下图所示(才发现帖子有长度限制,至少要20字?那就随便凑点)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2006-10-18 08:23:25 | 显示全部楼层 来自 新加坡
接下来编译工程,点击如图所示按钮。请注意,在做这一步之前,你必须已经用“mbuild -setup”设置好编译器了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

 楼主| 发表于 2006-10-18 08:38:34 | 显示全部楼层 来自 新加坡
不出问题的话,编译的结果就会在当前工作目录下创建以工程名同名的目录,其中有两个子目录,分别是src和distrib。编译好的COM组件在distrib中。参照《深入浅出MATLAB7.x混合编程》第8章的相关内容,创建VC Win32 Console工程,试验在这个C++程序中使用myadd COM组件。为了方便大家测试,我把我用的工程文件贴上来,请注意组件中类的名字。

先贴到这里,欢迎大家讨论。谢谢!

[ 本帖最后由 taohe 于 2006-10-18 08:41 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2006-10-18 14:39:19 | 显示全部楼层 来自 新疆乌鲁木齐
一直都很想翻译一下关于deploytool的帮助,但是工作实在十分繁重(每日看专业书都要看到3点以后),另一方面对于编译实在没有一个全局性的理解和把握,十分害怕翻译错误产生误导的作用,所以就向taohe兄约了稿,希望能够对大家有帮助,更重要的是,由于comtool命令在r2006b中改成了deploytool,很多朋友十分困惑原来的comtool到底跑到哪里去了?所以,这篇文章来得正是时候,可以对这一问题做一解答!
另外在其他论坛上和人讨论时,他说在r2006a中也没有了comtool,但据说又没有deploytool,不知道是不是这么一回事儿呢?烦请知道的朋友给说明一下,在r2006a中的编译GUI工具到底是什么?谢谢!
发表于 2006-10-18 15:31:30 | 显示全部楼层 来自 北京
原帖由 bainhome 于 2006-10-18 14:39 发表
一直都很想翻译一下关于deploytool的帮助,但是工作实在十分繁重(每日看专业书都要看到3点以后),另一方面对于编译实在没有一个全局性的理解和把握,十分害怕翻译错误产生误导的作用,所以就向taohe兄约了稿,希望 ...



刚在2006a查了一下,其相关命令是dotnettool,晕~~~~~~不过偶不会用,hoho

评分

1

查看全部评分

发表于 2007-10-26 09:31:11 | 显示全部楼层 来自 山东青岛
被我翻出来了 ^_^ 谢谢;P :D :victory:

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2007-11-29 15:16:31 | 显示全部楼层 来自 山东东营
感谢楼主的无私,我正学习matlab程序接口,新手上路,目前使用的是matlab6.5,看了楼主的帖子(最近的帖子都看了)不知道我是不是该改用matlab7以上版本,因为前后版本变化较大。可matlab7以上的也是版本繁多,不知道哪个相比较而言较好?另外,6.5版本里一般都是用mex命令,建立mex文件,7版本以后的mbuild和mex有区别么?其他语言我用的fortran,不知道7版本和6.5版本和fortran语言接口部分差别大么?
回复 不支持

使用道具 举报

发表于 2007-11-29 15:23:42 | 显示全部楼层 来自 湖北武汉
Fortran Mex应该差别不大
因为是接口调用FORTRAN而已
回复 不支持

使用道具 举报

发表于 2007-11-29 15:46:11 | 显示全部楼层 来自 山东东营
我刚查了matlab的帮助:
MEX compiles and links source files into a shared library called a
  MEX-file, executable from within MATLAB. The resulting file has a
  platform-dependent extension, as shown in the table below:

MBUILD compiles and links source files that call functions in the MATLAB
  C/C++ Math Library or MATLAB C/C++ Graphics Library into a stand-alone
  executable or shared library.
对此我的理解是Mex命令是把C/C++、Fortran语言的程序编译成动态链接库(Windows系统下);
Mbuild是把C/C++、Fortran语言的程序编译成可执行文件或者动态链接库,但这程序调用了matlabC/C++ Math Library 和 MATLAB C/C++ Graphics Library ,mex命令编译的文件没有调用matlab的这两个库。
我这样理解不知道对不对?
回复 不支持

使用道具 举报

发表于 2007-11-30 10:06:25 | 显示全部楼层 来自 山东东营
又看了资料,我认为mex是 把C/Fortran语言编写的程序编译成共享库以便matlab调用,而mbuild命令把matlab程序编译成可执行文件或者共享库使得matlab外的语言调用。一个是matlab调用其他语言程序,一个是被其他语言程序调用。
应该是这样的吧
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-26 14:15 , Processed in 0.070909 second(s), 23 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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