我有一个复杂的Matlab函数,我不想在C#中重写。该函数返回一个包含N个双精度数字的数组。Matlab输出到C#
鉴于我已将函数编译为.NET程序集(.dll文件),并且该函数的签名与[resutls] = myFunc('stringInput')类似,如何在函数内部调用函数C#代码?
谢谢!
我有一个复杂的Matlab函数,我不想在C#中重写。该函数返回一个包含N个双精度数字的数组。Matlab输出到C#
鉴于我已将函数编译为.NET程序集(.dll文件),并且该函数的签名与[resutls] = myFunc('stringInput')类似,如何在函数内部调用函数C#代码?
谢谢!
在这里你可以找到的步骤做:
https://www.mathworks.com/help/compiler_sdk/gs/create-a-cc-application-with-matlab-code-1.html
是必须已安装运行代码在计算机上运行时库(您可以在创建.dll文件包添加它)
明天如果链接被破坏会发生什么?考虑在你的答案中提供代码。 – peval27
我这样做的方式是通过添加MLApp作为项目参考。 从MATLAB,您需要启动自动化服务:
enableservice('AutomationServer', true);
和C#中,你可以使用连接到Matlab的。
MLApp.DIMLApp matlabInstance = (MLApp.DIMLApp)Marshal.GetActiveObject("Matlab.Desktop.Application");
然后您可以使用MLApp的接口函数进行交互。例如。
int a = (int)matlabInstance.GetVariable("variableName", "base");
甚至执行的东西。例如:
matlabInstance.Execute("evalin('base' , 'plot(range , dataVector , ''k'');');");
当然你需要一些错误处理,等等正常的应用程序的东西。 有一个关于它的话题here
将引用的dll放在你的'.net'项目中,然后只是尊重你的函数的签名......你有没有尝试过一个小例子? – Hoki