许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  VS2019 .NET 4.7 C#与Matlab混合编程常见出错点及解决办法

VS2019 .NET 4.7 C#与Matlab混合编程常见出错点及解决办法

阅读数 9
点赞 0
article_banner

环境

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


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空