最近的项目用到了matlab,但是由于考虑到要与其他的项目合成,所以不能直接用matlab,所以就想到了能不能把matlab写成的函数编译成一个dll,供C#调用,所以网上查了点资料研究了一下matlab与C#的混合编程,记录一下:
首先在matlab中写好你自己实现的函数,例如假设 function result = myTest (paramA, paramB),把你的.m文件编写完以后,在matlab控制台里输入deploytool,弹出配置窗口,选择.net component,新建一个myTest.prj,然后把你的.m文件拖进去,点击build,则可以生成最后的dll
但是,在过程中遇到了一个麻烦的问题,就是C#在调用dll初始化matlab生成的类时,总是提示:typeInitialization exception 类型初始化设定异常,网上找了好久,试了个各种解决方法,终于发现了原因:
原来是在build dll时,选择的.m文件的所在路径不能包含中文/空格,我把.m文件直接移到了根目录下的某个不含空格和中文的文件夹下,然后把在这个文件夹下的.m文件拖到myTest.prj中,build,VS中重新引用生成的新的dll,发现程序正确。
但是,我把程序移植到了另一台电脑上,那台电脑没有安装matlab,但是我安装了matlab compilor runtime,运行程序时,发现又产生了类型初始化设定异常,郁闷啊。继续在网上寻找解决方案,试了各种方法,最后终于搞定了,但是不知道最