C#与matlab混合编程中常见问题汇总 您所在的位置:网站首页 flow编程常见问题 C#与matlab混合编程中常见问题汇总

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

2024-07-12 16:14| 来源: 网络整理| 查看: 265

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#代码能够成功运行:

解决办法

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

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

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

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有