从C调用MATLAB函数#
我开发了一个MATLAB函数,并且正在寻找一种方法从另一个C#应用程序中调用该函数,并将一些参数传递给它,并在C#程序中获得结果。从C调用MATLAB函数#
听说我可以使用Dynamic Data Exchange(DDE)或COM对象,但我可以做到吗?
在MATLAB Central中有一个很好的例子。
它显示了如何与MATLAB沟通方式有三种:
- COM
- MATLAB .NET Bulider
- MATLAB编译器
COM(我没有任何经验与它)
缺点:M ATLAB需要安装在目标计算机上。
MATLAB .NET构建器将您的MATLAB代码编译为.NET程序集,您可以直接使用它。
优点:不需要MATLAB要在目标计算机上安装
缺点:它是昂贵的
MATLAB编译器编译您的MATLAB代码为C/C++库或EXE文件。您可以通过P/Invoke使用它。
优点:不需要MATLAB要在目标计算机上安装
缺点:它是昂贵的,大量的P/Invoke的。
你应该指出,对于第二个和第三个选项,生成的二进制文件需要[MCR](http://www.mathworks.com/products/compiler/mcr/)安装在目标机器上(MCR可免费使用) – Amro 2013-06-12 14:27:44
链接现已停用:-( – 2014-08-13 08:03:58
有一个很好的例子 on this site设置一切。您可以使用MATLAB .NET部署工具。
您需要
- 安装MCR(MATLAB编译器运行时)。
- 使用Matlab Deploy 工具将您的Matlab函数部署到.NET Assembly。这将创建一个.dll文件。
- 在.NET项目中添加.dll引用。
- 添加对MATLAB.NET的引用。
这种方法的优点是目标机器不需要安装MATLAB,但是在下行方面执行起来非常昂贵。
您是否尝试阅读C#文档中的PInvoke属性?它会给你一个从.NET World调用COM对象的想法。 – kanchirk 2011-05-05 17:30:41
您可以将matlab函数句柄传递给C#委托。看到我的类似帖子:http://*.com/questions/31408624/passing-matlab-methods-as-delegates-to-net-object – CodyF 2015-08-06 14:50:14