1. 主页 > vs安装问题 > VS2019安装问题 >

VS2019 .NET4.7 C# 和Matlab混合编程 可能出错的地方及

环境

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版本选择,一定要选,不要默认,不要默认,不要默认!!!
matlab编译生成dll文件
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

联系我们

在线咨询:点击这里给我发消息

微信号:PREEE8

工作日:9:30-18:30,节假日休息