C#与matlab混合编程中常见问题汇总

C#与matlab混合编程中出现无法调用MWarray.dll 问题及解决办法

问题

最近在做一个项目需要将另外一台电脑的C#程序移到自己电脑上运行时,发现调用MWarray.dll 链接库文件老是报错
本人电脑预装matlab2018a,VS2019环境。另一台电脑是matlab2016a,VS2015环境。

原因

错误信息: “未能加载文件或程序集“MWArray, Version=2.16.1.0, Culture=neutral,
PublicKeyToken=e1d84a0da19db86f”或它的某一个依赖项。试图加载格式不正确的程序。”

1、这个错误出现的原因是没有正确添加MWarray.dll 链接库的引用

警告 发现同一依赖程序集的不同版本间存在冲突。请将项目文件中的 “AutoGenerateBindingRedirects” 属性设置为 true。

2、这个错误出现的原因是两个电脑matlab运行环境不同,添加的 MWarray.dll链接库版本与另一台电脑之前编译时的版本不兼容。也有可能是没有启用程序自动绑定重定向,参考具体其他解释https://blog.csdn.net/p15097962069/article/details/106985621/

System.Exception:“MWArray assembly failed to be initialized”
Exception: The MATLAB Runtime instance could not be initialized
ApplicationException: The MATLAB Runtime instance could not be
initialized segv - SEVERE ERROR 此异常最初是在此调用堆栈中引发的: [外部代码]

3、这个错误出现的原因是是安装的MCR(MATLAB Compiler Runtime)版本不同,即为matlab 的开发环境不同导致编译失败。或者是C#程序运行调用了matlab2018a自带的系统内C盘下电脑的MWarray.dll链接库版本,出现调用错误。

下面将介绍如何使得不同环境配置下两台电脑的C#代码能够成功运行:

解决办法

  1. 安装matlab2016a版本下的MCR (也可以直接安装matlab2016a,这里为了避免重复安装matlab,我们直接配置matlab2016a的开发环境)
    如何找到正确版本的MCR,可以参考https://blog.csdn.net/cfylove/article/details/49419323
    如何正确安装,可以参考https://jingyan.baidu.com/article/19020a0a057462529d2842d6.html

  2. 找到另一台电脑matlab2016a安装目录下的MWArray.dll文件,路径为“ D:\matlab2016a\toolbox\dotnetbuilder\bin\win64\v4.0 ” ;在这里插入图片描述
    将其置于本电脑的项目文件夹下,项目文件夹的路径为“C:\Users\项目文件夹\bin\Debug” ;
    这里为项目文件夹目录

  3. 在打开的解决方案资源管理器中添加对MWarray.dll 链接库引用
    在这里插入图片描述

  4. 添加完毕之后,运行项目文件,如按以上步骤正确运行之后,依旧出现了上面所述的问题3类型报错,特别注意!!!检查系统内电脑内下述.NET依赖的系统路径下的MWarray.dll链接库版本是否和另一台电脑编译文件版本一致。
    在这里插入图片描述
    这个原因可能是在进行.NET程序开发时,已经把本电脑上matlab2018a版本的 MWarray.dll 链接库放进了此系统路径,与另一台电脑编译文件版本时不一致,导致系统调试开发报错,需要进行替换。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值