C#编程 MWArray 报错 原因以及解决办法

未能加载文件或程序集“MWArray, Version=2.11.1.0, Culture=neutral….”

在C#和matlab的混合编程中,会调用Matalb中生成的动态链接库,XXX.dll。在调用过程中会出现,错误信息:“未能加载文件或程序集“MWArray, Version=2.11.1.0, Culture=neutral, PublicKeyToken=e1d84a0da19db86f”或它的某一个依赖项。试图加载格式不正确的程序。”

这个错误出现的原因是没有装matlab,也没有装MCR(MATLAB Compiler Runtime),即为matlab 的开发环境。

如果你装了 Matlab 却依然报上面的错,有两种情况,1,说明你加载的 XXX.dll 生成的matlab版本和你操作系统中安装的不一致,可能需要重新生成dll。2,可能存在的情况为,加载的XXX.dll是在X86的操作系统中生成的,而你的操作系统是X64,这个情况。需要在vs中更改目标平台,改为86。

MCR的路径:

以你安装的matlab 目录为起始目录,我的MCR路径为:
D:\Program Files\MATLAB\R2011a\toolbox\compiler\deploy\win64

C#编程 MWArray 报错 原因以及解决办法_第1张图片

MCR的作用:

MCR的作用很简单,当你写的程序在其他计算机上运行时,调用了MWArray.dll,却不能够安装matlab的时候,必须安装MCR才可以运行。MCR的安装方式可以简单粗暴的,不断下一步进行,当然,可以看看路径什么的。

我在网上搜了很多种尝试脱离matlab 环境,执行matlab 的 M文件的方法,均以失败告终。有一种非常接近成功的方法是,通过软件Matcom,将M文件转为C++文件执行,有兴趣的可以试一下,它会生成一堆头文件和编译的cpp文件,鉴于我的很多M文件中的函数都是调用关系,实在无法弄懂其中的关系,所以也就跪了。

建议,想尝试Matcom的同学,我当时用的是Matcom 4.5的版本。貌似是我当时能搜到的最新版本,而这个版本貌似是2011年就更新了的(时间我不确定)。有时间研究Matcom,还是多花些时间,将你的M文件用别的语言或者方式,重写一遍吧。

你可能感兴趣的:(Matlab,报错,C#)