C#中调用Matlab编写的函数
关于C#与Matlab的混合编程,我在网上看了很多教程,按他们的步骤进行,总会遇到各种各样的问题不能解决,最终以失败而告终。经过自己两天的努力,看了诸多文献,终于成功了,故把自己确信能成功的方法分享给大家。当然在编写不同功能的函数会遇到其它千奇百怪的问题,因此我不能保证按我的方法在任何环境下都能成功。本文只是一个简单的例子,遇到的问题相对较少,更复杂的问题或更诡异的出错只能请教其他大神了。
本文所用的编程平台为Visual Studio 2010,Matlab版本为MATLAB R2012a,这是最后一版经典界面的Matlab。
一、编写Matlab函数文件
此部分不多说,学过Matlab的都懂。
例子为一个已知半径R计算圆周长的函数zhouchang()。
二、编译函数文件为DLL
在Matlab命令行下运行deploytool,在图形界面里选.net组件,然后进入一个工程目录的界面,新建工程,工程的名字就是.net组件的名字,在其下面的目录表示.net类名,在类名上点右键"Add File...",把Matlab的.m函数文件选进去。
最后进行编译(Build the project),生成的目录下有以工程名命名并加Native的dll文件。
过程可能较久,耐心。如果出错,看提示是什么出错,网上搜索相关资料修改。
三、在C#中调用
建立一个C#工程并引用MWArray.dll和刚生成的zhouchangNative.dll。
我的MWArray.dll在:..MATLABR2012atoolboxdotnetbuilderbinwin64v2.0MWArray.dll
添加声明:
using MathWorks.MATLAB.NET.Arrays; //数据交换必需
using MathWorks.MATLAB.NET.Utility; //如果要用到画图功能才添加
using zhouchangNative; // 引用的DLL文件名
编写代码:
编译运行后可能会有如下出错:
需要进行如下设置:
编译运行:
大功告成!
- 上一篇: 无限精度除法运算
- 下一篇: Ubuntu和Win7双系统安装图解