本文大概总结了混合编程的流程和出现“类型初始值设定项引发异常”这个问题的总结方法。
前提条件
- Matlab安装了MCR,和版本配套的编译器
- 准备一个.m函数
实现环节
配置matlab的编译器
这个相关的博文有很多,大概就是输入
mbuild -setup
如果弹出来是这个截图,就是已经安装好了,如果不是会自动弹出来安装网址,进入安装,rua就完事了
生成dll文件
再然后就是输入
deploytool
出现这个截图,选library complier进入界面
生成的dll文件在自动弹出来的文件夹的这个子文件夹下面
(啊写到这里突然觉着好麻烦呜呜但是还是要坚持记录一下不然就忘了,好不容易搞出来的下次再花时间可怎么整)
写一个WPF窗体
大概就是个随便搞个触发的,反正也不是重点
其实还可以放个控件直接看结果,但是偷懒打断点了
啊这也就面临一个问题就是这个里面只有直接用matlab的MWArray进行运算的环节,没有转字符,还可以水一个第二趴的感觉hhhhh
引用dll
然后就是引用生成的dll
至于MWArray,可以不引用,反正也会自动弹出来让你引用,找还挺麻烦的(挠头)
这个就是代码,具体怎么使用如果有问题,其实在刚刚matlab自动生成的三个文件夹里面的for_testing文件夹就有个同名的.cs文件可以进行查看
打开之后是这样
虽然里面有不知道是啥的乱码反正能看懂其中的输入输出啥的
或者直接双击刚才引用里面的test
右边就是使用的方法
然后就是使用就van事儿啦!!!
初始值异常问题
就是这个报错
mua呀这个问题困扰了我一下午,网上一共看到过3种原因,我唯一起效的是这个
更改管理器的版本
这里和自己下载的matlab的版本要对应,我这里默认是any cpu所以一直不成功
好气,但是终于快写完了
还有两种可能的原因
添加MCR环境变量
我的matlab是R2020b,不知道是不是改了runtime得原因,我不加这个环境变量也能运行
再添加同名有native后缀的dll文件
反正感觉有点玄学,大概就是这样,散会!
下一篇大概是康康如果不是数字而是字符串啥的咋用,以及怎么和别的程序交互~~~
搞完了把所有的文件上传一下(大概如果记得的话)