工作中使用到了C#与MATLAB联合编程,最近在使用过程中遇到一个奇怪的问题。前期完成代码的编译与调用均没有问题,突然一天在使用中提示The MATLAB Runtime instance could not be initialized
System.Exception: MWArray assembly failed to be initialized ---> System.Exception: The MATLAB Runtime instance could not be initialized ---> System.ApplicationException: The MATLAB Runtime instance could not be initialized
segv - SEVERE ERROR
在 MathWorks.MATLAB.NET.Utility.MWMCR..ctor(String componentId, String componentPath, Stream embeddedCtfStream, Boolean isLibrary)
--- 内部异常堆栈跟踪的结尾 ---
在 MathWorks.MATLAB.NET.Utility.MWMCR..ctor(String componentId, String componentPath, Stream embeddedCtfStream, Boolean isLibrary)
反复检查机器的环境,也没有发现问题,因为使用的机器就是开发机器,不知原因何在。同时在C#中更新了MATLAB的动态库与MWArray.dll文件仍然存在该问题。
问题所在实则是matlab再某个目录生成的临时文件夹导致调用失败,但是并不是所有操作系统都会导致这个错误。例如我本机装的win11专业版,已出现多次该问题导致程序无法运行。下面是临时文件的路径。
C:\Users\Administrator\AppData\Local\Temp\Administrator\mcrCache9.5
将mcrCache9.5文件夹删除,再次运行程序可以正常运行了。(注意mcrCache9.5文件夹与你安装的MATLAB版本有关)