C#调用matlab生成的DLL

首先我们想要使用matlab,肯定是想要进行科学计算,比如使用matlab里的函数库处理数据。

我这里的版本是matlab2016a,其他版本也可以,主要是版本太旧的话,里面可能就没有你想要的函数。

最重要的提示:所有的路径不要中文,不要中文,不要中文!!!

其次你肯定要写好matlab的代码,用于封装成DLL

PS:一定要在matlab里运行试一试,看看是否真的好用,至少也要能有返回值

接下来就是导出成DLL(看了太多攻略,人都要麻了)

点击【应用程序】

继续点击最右侧箭头显示更多

找到这个

选择:

进去之后选择【.NET Assembly】:

点击+号,将你的.m文件包括的函数放入其中

这里要注意:如果你是绿色版就没办法添加成功,安心的安装和破解

在这里修改类名:非必须

最后一步:点击右上角的绿色对勾,在弹出的窗口选择部署的地方就可以。

到此为止,简单的部署完成了,但是还没完事,接下来是踩坑环节

你肯定不可能只在自己的电脑运行,所以你需要拿好一些东西,用于打包。

如果别人的电脑没有matlab或者和你的版本不一样,你就需要加上打包一个运行时

1.在当前路径下找到一个名叫MWArray.DLL的文件(这个是为了C#和matlab变量之间转换用的)

不一定是2.0,根据你的matlab版本

接着打开刚才的输出目录,找不到的话可以打开你的matlab工程里看下:

把这两个DLL和上面那个DLL,一共三个DLL,放进你的项目文件里,建立一个lib文件夹放进去,然后在你的C#项目里引用这三个DLL

现在你就可以用C#进行开发了,但是还有坑:

如果你用VS开发:

右键项目属性:

属性中选择生成,然后去掉:首选32位

这一步骤的原因主要是为了适配你的matlab版本,如果你的matlab是64位,那么首选32位肯定报错。

你当然也可以:

把这个anyCPU换成x64(对应你的版本)
我估计现在没人32位开发C#软件,前一种方式基本OK

然后你就发现你可以使用DLL里的方法了

但是使用起来有个小问题,就是第一次使用的时候可能是因为启动服务或者怎么事的,有点卡,你可以在界面生成前,跑一个线程,调用一下这个方法,就不会让主线程卡死,下下策。

最后一个问题就是你如何来转换变量,我提供简单的思路,因为我也没用太多次。

我用了点linq,蛮好用的

上面这个例子就是把一个C#的数组变成matlab能识别的变量,然后放入你DLL的方法里当成传参,然后用aa这个对象来接收方法的返回值。

最后来讲运行时:

找到这个路径

把这个路径下的exe打包给没有matlab或者和你的开发版本不一致的电脑上,安装一下。
搞定!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C#SMVP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值