matlab跟C#对接 - 小众知识

matlab跟C#对接

2013年01月27日 14:18:05 苏内容
  标签: matlab/C#
阅读:7328

目的:将matlab的.m导出生成.DLL,在C#下调用该dll。


环境:vs2012 、  matlab2013a


步骤:


         下面我以一个具体的实例来演示,希望能给大家带来帮助,如有不对的地方,还请大家留言,以便我改进。


(一)在matlab2013a下面新建一个.m文件,我们以两个数求和的函数作为例子,如下截图


           


 


(二)为matlab设置编译器。


            在matlab命令窗口输入mbuild -setup选择编译器,我机器上的编译器只有vs2012(注意如果使用VS.net做


           应用的话,建议编译器选VC2012,否则C#中会告诉你DLL找不到Entry Point,网上说的),这里就不贴图了。


 


(三)在vs2012下新建一个接口文件,注意接口里函数的名字必须跟你matlab中主函数名字一致(我这里就是addTwo)


          3.1> 新建一个类库test


                 


         3.2>修改关键字class-->interface,接口名字随便修改Class1-->testFace,函数名字必须是addTwo


                 


             3.3> 配置管理器,我用的是x64,你如果用的是x86的话就选择x86。


             


             


            3.4> 注意,最后要重新生成解决方案


(四)将生成的test.dll(该动态链接都在改项目所在目录下的test\bin\x64\Debug里)拷贝到matlab中的addTwo.m文件所在的目录下。


          4.1>然后在命令窗体中输入“deploytool”


         


          4.2>输入上述命令后,弹出对话框,工程名随便起,这里叫“testMatlab",选择.NET Assembly


                  


         4.3>设置,NET为3.5,设置Type Safe Api为刚添加的test.dll,设置完成后关闭对话框。


                


                


                


      4.4>添加要编译的.M文件.单击“Add classes”,类名随便写一个“MC”,在该类名下添加.M文件addTwo.m,最后单击右上角的生成按钮


             


               如果编译成功会出现如下画面


               


(五)拷贝的matlab下的dll文件


            


 


(六)在vs2012下面新建控制台应用程序,将上面的三个dll引用进来,你可以先把上面3个dll拷贝到工程下面一个文件夹下面,然后引用。


             


        6.1>添加引用,由于之前命名空间就是testMatlab(拷贝dll时,我们要拷贝testMatlabNative.dll),所以要引用该命名空间”using testMatlab“


                 


           6.2>设置该项目属性,主要是设置.NET 3.5跟cpu是x64


                


               


(七)运行程序,检验成果


                      


 


参考文献:http://blog.sina.com.cn/s/blog_4b94ff130100d4uf.html


                  http://www.cnblogs.com/drizzlecrj/archive/2009/04/20/1439636.html


扩展阅读