C#和MATLABH混合编程详解----基于.Net程序集
Jacklin 2014-8-5 2965417944@qq.com
一、引言
最近由于完成导师的项目需要,做一款工具软件,界面准备用C#来写,但是数据处理
部分如果用C#来完成的话工作量必然很大,而MATLAB在这方面显示是十分擅长的,因此最终确定方案是C#和MATLAB混合编程来完成。(注:C#和MATLAB进行混合编程有多种实现方式,这里主要讲基于.net程序集的方式。)
二、必备软件
在进行C#和MATLAB混合编程之前,我们必须搭建相应的开发环境:
Microsoft visual studio 2010;
MATLAB R2010a;
MCRInstaller.exe;
注:①上面的是我机器上安装的软件版本,当然你也可以使用其它的版本;
② MCRInstaller.exe软件在你的MATLAB安装目录下,我的在:
(E:\Program Files\MATLAB\R2010a\toolbox\compiler\deploy\win32)
三、几个概念
⑴MCR(MATLAB Compiler Runtime)
MATLAB Compiler Runtime (MCR) 是一组独立的共享库,可用于在未安装 MATLAB 的计
算机上执行编译后的 MATLAB 应用程序或组件
⑵MC(MATLAB Compiler)
MATLAB 编译器能够将您的 MATLAB® 程序编译为独立的应用程序,或可与其它通
用编程语言集成的共享库。通过安装MATLABCompiler Runtime,没有安装 MATLAB 的用户也可以使用 MATLAB Compiler 创建的应用程序和库,而无需支付版税。您既可以将 MATLAB Compiler Runtime 与应用程序打包到一起,也可以让您的用户在安装过程中进行下载。
四、详细步骤
⑴MATLAB编译环境的设置
①在MATLAB命令行窗口输入mbuild –setup ,然后再随后的问句后面选择n
②根据自己实际情况,选择MATLABCompiler的外部编译器,然后输入自己编译器的安装路径,我的是:E:\Program Files\Microsoft VisualStudio\Common\MSDev98\Bin
③确认设置的编译器是否正确,正确则输入y;
出现这些,说明编译环境设置完毕;
⑵创建一个文件夹我的是(D:\MyDocuments\MATLAB\NetCal),在MATLAB中新建一个.M文件mysum.m(注:一般保持.m文件文件名和函数名一致,避免出错),eg:
⑶通过MATLABCompiler 把.M文件生成.net程序集(.dll后缀)
①在MATLAB命令行中输入deploytool, 出现如下对话框,然后输入工程名(注:这里的工程名就是生成的程序集名,也是你在MATLAB中要引用的命名空间名)和你要创建的目标种类(这里要创建.net程序集,所有选择.NET Assembly.)
②在deploytool窗口中输入类名SumClass(你可以选择任何其他合法的类名),然后点击Add files选择上面的mysum.m文件,如下所示:
③设置编译选项,点击选择setting选项,然后选择.net选项卡,设置使用的.net框架的版本以及在AssemblyType单选按钮中选择shared,如下:
注:你在这里选择的.net框架的版本和你创建的.net应用程序使用的.net版本必须一致,由于MATLABR2010a最高只能选择3.5,而vs2010默认只安装了4.0版本的.net,我又安装一个.NET Framwork 3.5 SP1,这下可以创建4之前版本的.net应用程序;
④设置好编译选项后,直接点击进行编译;
⑷在windows窗体应用程序中应用MATLABCompiler 生成的.net程序集;
①创建windows窗体应用程序如下,这里只需要注意一点,选择.net框架为3.5 eg:
②添加引用,在新建的windows窗体应用程序中添加上面MATLAB编译生成的Test.dlMWArray.dll(E:\ProgramFiles\MATLAB\R2010a\toolbox\dotnetbuilder\bin\win32\v2.0)引用。
然后添加如下命名空间:
③在窗体中添加一个textBox控件和一个button控件,然后添加如下代码:
④启动调试,点击按钮sum,结果如下: