.NET项目调用MWCharArray遇System.TypeInitializationException问题求助
以下是你可能遗漏的排查点:
环境变量未生效:设置Path后,必须重启Visual Studio甚至电脑,才能让新的环境变量被进程读取。另外确认是把
C:\Program Files\MATLAB\MATLAB Runtime\v901\runtime\win64添加到系统环境变量的Path中,而非仅用户变量,避免权限或优先级问题。项目平台位数不匹配:MATLAB Runtime v901是64位版本,你的.NET项目必须将平台目标设置为x64(右键项目→属性→生成→平台目标),如果设为x86或Any CPU,会导致无法加载64位DLL。
未初始化MWArray:在使用MATLAB.NET组件前,必须先初始化MWArray。在项目启动代码(比如
Program.cs的Main方法开头)添加:MathWorks.MATLAB.NET.Arrays.MWArray.Initialize();未初始化会触发类型初始值设定项异常,进而导致DLL加载错误。
引用的MWArray组件版本不匹配:检查项目中引用的
MWArray.dll版本是否为v901(对应MATLAB R2016b)。如果引用的是其他版本的组件,即使Runtime版本正确,也会出现加载失败。需确保引用的组件与Runtime版本完全一致。手动复制DLL到输出目录:临时测试方案,将
mclmcrrt9_0_1.dll复制到项目的输出目录(如bin\Debug\x64),验证是否是路径读取问题。若可行,再排查环境变量的配置问题。修复MATLAB Runtime安装:如果以上都无效,可能是Runtime安装不完整。打开控制面板→程序和功能,找到MATLAB Runtime v901,选择修复,重新完成安装。
内容的提问来源于stack exchange,提问作者Sourabh Singh

