动态加载MATLAB生成的dll并反射dll里的函数

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();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qinglongqishi1/article/details/51206916
今日推荐