环境
Windows 10 企业版 2016 长期服务版
Matlab 2015b
VS2019
.NET 4.7
一、Matlab .m 文件生成 .dll文件
1 自己编辑自定义函数:以本文为例,编辑一个简单移动平均预测函数
function y1=ydpj_yuce(y,m); %y是带预测数组,m数组长度
%m=length(y);
n=[4]; %n 为移动平均的项数
for i=1:length(n) %i=1,2
for j=1:m-n(i)+1%i=1
yhat{i}(j)=sum(y(j:j+n(i)-1))/n(i);
end
y1(i)=yhat{i}(end); %预测的值
s(i)=sqrt(mean((y(n(i)+1:m)-yhat{i}(1:end-1)).^2));%均方误差
end
mex -setup C++
2 将MEX配置为使用“MinGW64 Compiler (c++)”进行c++语言编译。
deploytool
3 接着选择以编好MATLAB函数导入,选择.NET Assembly 一定要在"Additional Runtime Settings"选项中选择 Miscrosoft Framework:选择4.0(按照你的VS中.NET版本选择,一定要选,不要默认,不要默认,不要默认!!!)
4 最终生成以下文档
二、将.dll文件导入到项目中去,并运行函数
选择yupj_yuce.dll引入到VS工程中去
1 在工程中菜单栏“项目”添加“引用”
在调用文档中写上
using ydpj_yuce;
ydpj_yuce.yuce myyuce1 = new yuce();
MWNumericArray yy1 = y;
MWNumericArray xx1 = Nday;
MWArray result = myyuce1.ydpj_yuce(yy1, xx1);
即可实现预测过程
三、可能存在的问题及解决办法
内部异常 1:
TypeInitializationException: “MathWorks.MATLAB.NET.Utility.MWMCR”的类型初始值设定项引发异常。
可能你的VS环境是默认的32位,在“解决方案平台”设置x64位
内部异常 2:
Exception: The MATLAB Runtime instance could not be initialized
内部异常 3:
ApplicationException: The MATLAB Runtime instance could not be initialized
segv - SEVERE ERROR
当出现上述两者异常可能是在编译生成dll文件时,没有设置.NET环境,应设置为本机.NET对应的版本,如本机设置为4.0
本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2019anzhuangwenti/2020/0727/5804.html