假设我们现在拿到一份matlab编译成的dll,该怎么在C#项目中调用呢?大致需要遵守下面几个步骤:
- 安装MCR
- 引用MWArray.dll
- 引用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就是运算的结果