小记Matlab与C#混合编程

本文记录了在Matlab中编写函数并编译成DLL供C#调用的过程,遇到的类型初始化异常问题及解决方案。通过调整.m文件路径、安装MCR、设置环境变量、注册dll、重新编译和设置assembly参数,最终成功在未安装Matlab的电脑上运行程序。
摘要由CSDN通过智能技术生成

最近的项目用到了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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值