目的:将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