小记Matlab与C#混合编程
2012-08-12 12:04
288 查看
最近的项目用到了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,运行程序时,发现又产生了类型初始化设定异常,郁闷啊。继续在网上寻找解决方案,试了各种方法,最后终于搞定了,但是不知道最后具体是那个解决方案发挥了作用,所以把所有试过的方法都贴一下:
1. 重新安装MCR,选择安装路径为C:\MCR (不含空格,中文)
2. 确保环境变量正确 path后添加:C:\MCR\v713\runtime\win32
3. 运行 -> regsvr32 mwcomutil.dll
4. 重新build .dll文件,package中选择add MCR,setting中设置assembly type为shared,encryption keyfile设为空,再把新生成的dll文件拷贝到那台电脑,替换,重新引用
5. 重启 or 重启VS?
经过上述步骤,发现程序运行正确,但是最后到底是哪个步骤有用,就不清楚了:)
其实这个以前也搞过,估计也是碰到类似的问题,搞了好久,现在隔了一段时间,又忘记之前的教训和经验了,结果又花了很久的时间网上找资料,所以现在记录一下,免得以后再碰到,浪费时间。
首先在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,运行程序时,发现又产生了类型初始化设定异常,郁闷啊。继续在网上寻找解决方案,试了各种方法,最后终于搞定了,但是不知道最后具体是那个解决方案发挥了作用,所以把所有试过的方法都贴一下:
1. 重新安装MCR,选择安装路径为C:\MCR (不含空格,中文)
2. 确保环境变量正确 path后添加:C:\MCR\v713\runtime\win32
3. 运行 -> regsvr32 mwcomutil.dll
4. 重新build .dll文件,package中选择add MCR,setting中设置assembly type为shared,encryption keyfile设为空,再把新生成的dll文件拷贝到那台电脑,替换,重新引用
5. 重启 or 重启VS?
经过上述步骤,发现程序运行正确,但是最后到底是哪个步骤有用,就不清楚了:)
其实这个以前也搞过,估计也是碰到类似的问题,搞了好久,现在隔了一段时间,又忘记之前的教训和经验了,结果又花了很久的时间网上找资料,所以现在记录一下,免得以后再碰到,浪费时间。
相关文章推荐
- C#与MATLAB混合编程实例
- 【转】Matlab和C#混合编程
- MATLAB与C#混合编程
- C#与Matlab混合编程入门教程一:几种混合编程的方法
- 一个基于COM组件的Matlab与C#混合编程实例
- 【数据挖掘】Matlab与C#混合编程
- Matlab与C#混合编程
- MATLAB C#混合编程demo
- 关于matlab与c#混合编程产生的移植问题
- matlab与C#混合编程
- Matlab与C#混合编程环境设置
- MATLAB C#混合编程demo
- matlab与c#混合编程之图像参数传递
- 关于MATLAB和c#混合编程以及如何打包的
- Matlab和C#混合编程之数组传值
- C#与MATLAB混合编程
- matlab与C#混合编程小例子
- C#与matlab混合编程
- MATLAB与C#混合编程
- Matlab模型与实际数据对接+C#混合编程