using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Reflection;//反射所需要的using指令 using MathWorks.MATLAB.NET.Arrays;//使用MATLAB所必需的,不需要引用MATLAB生成的dll,但是MATLAB的那个dll必须引用 namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Assembly ass; Type type; Object obj; ass = Assembly.LoadFile(@"F:\Matlab\CTest2\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) });//第二个参数为MATLAB函数的参数类型,有几个参数就是几个typeof(MWNumericArray) //var list=new List<Type>(){ typeof(MWNumericArray) }; //list.Add(typeof(MWNumericArray)); //本行和上一行可以通过i++的方式将函数类型列表封闭 //var method = type.GetMethod("MyFun", list.ToArray()); int a = 1, b = 2, c; obj = ass.CreateInstance("Mydll.MyClass");//生成MATLAB类的实例 var d = method.Invoke(obj, new object[] { (MWNumericArray)a, (MWNumericArray)b }); c = ((MWNumericArray)d).ToScalarInteger(); } } }
动态加载MATLAB生成的dll并反射dll里的函数
猜你喜欢
转载自blog.csdn.net/qinglongqishi1/article/details/51206916
今日推荐
周排行