MATLAB.NET混合编程之二~~由C#调用MATLAB编译生成的dll

假设我们现在拿到一份matlab编译成的dll,该怎么在C#项目中调用呢?大致需要遵守下面几个步骤:

  1. 安装MCR
  2. 引用MWArray.dll
  3. 引用matlab编译出的dll

安装MCR

首先要找到matlab的dll兼容的MCR是什么版本,可以参考本系列上篇《MATLAB.NET混合编程之一~~由MATLAB编译dll》,里面提到matlab编译dll后会同时生成overview,里面有关于MCR版本的要求。

另一个方法是直接问dll的提供者,没有理由dll都编译出来了还不知道使用哪个版本的MCR。MCR的下载很简单,直接问度娘吧。

引用MWArray.dll

MWArray.dll是我们在混合编程中必然会用到的,基本上C#代码跟matlab的函数交互就靠这个类以及它的子类比如MWCellArray、MWNumericArray等等

MWArray.dll在安装好MCR之后就可以在安装目录找到,如果安装了matlab,也可以在matlab的目录里找到,不过混合编程的部署机器基本上都不会安装matlab,这玩意太大了,一般就安装个MCR就行。

一般路径是C:\Program Files\MATLAB\MATLAB Compiler Runtime\v717\toolbox\dotnetbuilder\bin\win64\v2.0

添加完MWArray.dll后,还需要在引用matlab.dll的文件中引入两个命名空间:

using MathWorks.MATLAB.NET.Array;
using MathWorks.MATLAB.NET.Utillity;

这样就可以在代码中使用MWArray了。

引用matlab生成的dll

经过前面两步,已经可以在c#中使用matlab生成的dll了,在C#工程中添加对于dll的引用,然后在代码文件中引用相关的dll命名空间就可以调用dll中封装的matlab函数了。以前一篇《MATLAB.NET混合编程之一~~由MATLAB编译dll》的matlab函数为例(假设类名为DemoClass):

MWArray num=5;
DemoClass dc=new DemoClass();
MWArray result=dc.MyTest(num);
//result就是运算的结果

参考资料

  1. Matlab混合编程之NET组件(C#篇)
  2. C#中调用 matlab dll 作曲线拟和

你可能感兴趣的:(net,matlab,C#)