MyFun(Program实现多返回值的功能).m文件
function y=MyFun(x1,x2) y=cell(2); x1=1; x2='哈哈哈'; y{1}=x1; y{2}=x2; end
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MathWorks.MATLAB.NET.Arrays; using System.Reflection; using System.Collections; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { Assembly ass; Type type; Object obj; ass = Assembly.LoadFile(@"F:\Matlab\CTest5\Mydll\for_redistribution_files_only\Mydll.dll");//加载MATLAB生成的dll文件所在绝对路径 type = ass.GetType("Mydll.MyClass");//NameSpace.Claas(MATLAB生成dll时所起的命名空间和类的名字,命名要统一,使代码封闭) var method = type.GetMethod("MyFun", new Type[] { typeof(MWNumericArray), typeof(MWNumericArray) }); int a = 3, b; string str1 = "什么", str2; obj = ass.CreateInstance("Mydll.MyClass");//生成MATLAB类的实例 var answer = method.Invoke(obj, new object[] { (MWNumericArray)a, (MWCharArray)str1 }); MWCellArray output = (MWCellArray)answer; //返回值类型不同所以,MATLAB中返回值定义为cell类型,此时也只能转化为cell类型 var u1 = output[1]; var u2 = output[2]; b = ((MWNumericArray)u1).ToScalarInteger(); str2 = ((MWCharArray)u2).ToString(); } } }
参考资料: http://www.cnblogs.com/rijing2004/archive/2007/08/07/reflection.html