C#与matlab混合编程中常见问题汇总 | 您所在的位置:网站首页 › flow编程常见问题 › 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#代码能够成功运行: 解决办法安装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 实验室设备网 版权所有 |