Matlab MWMCR::在一个系统上评估C#中的函数错误

Matlab MWMCR::在一个系统上评估C#中的函数错误,c#,matlab,C#,Matlab,我用C#VS2017和Matlab 2012b编写了一个非常简单的程序: namespace TestConMatlab { class Program { static void Main(string[] args) { try { var matlab = new MatlabFunction(); double[] data =

我用C#VS2017和Matlab 2012b编写了一个非常简单的程序:

namespace TestConMatlab
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                var matlab = new MatlabFunction();
                double[] data = { 1, 2, 3 };
                double[,] r = (double[,])matlab.doMedian(data.ToArray());
                Console.Out.Write("OK: " + r.ToString());                
            } catch( Exception ex )
            {
                Console.Out.Write(ex.ToString());
            }
            Console.ReadLine();
        }
    }
}
此程序在多台PC上运行,但在一台计算机上我有:

System.Exception:

... MWMCR::EvaluateFunction error ...
Undefined function 'doMedian' for input arguments of type 'double'..


   at MathWorks.MATLAB.NET.Utility.MWMCR.EvaluateFunction(String functionName, Int32 numArgsOut, Int32 numArgsIn, MWArray[] argsIn)
   at MathWorks.MATLAB.NET.Utility.MWMCR.EvaluateFunction(String functionName, Object[] argsIn)
   at MatlabFunctionNative.MatlabFunction.doMedian(Object input)
   at TestConMatlab.Program.Main(String[] args) in C:\Users\User\source\repos\TestConMatlab\Program.cs:line 18
当然,我已经安装了相同的Matlab MCR v8.0。我用procmon跟踪了一些API调用,但没有找到解决方案。

我已删除文件夹C:\Users\%USER%\AppData\Local\Temp\%USER%\mcrCache8.0
删除MCR并手动删除C:\Program Files(x86)\MATLAB,重新启动后,程序工作

与Matlab 2017及更高版本向后兼容。因此,当您更改matlab版本时,不需要修改现有代码。在同一台机器上,您还可以安装多个版本的运行时库。听起来好像您没有在不工作的机器上安装17.0运行时库。或者您只为一个用户而不是所有用户安装。如果未安装MCR,我有“System.DllNotFoundException:无法加载DLL'mclmcrrt8_0.DLL':找不到指定的模块。(HRESULT中的异常:0x8007007E)”@jdwind听起来您没有安装正确版本的运行库。安装的版本必须与用于编译dll的Matlab版本相同。我安装的版本与其他电脑上的版本相同,我甚至设计了重新安装程序,重新启动。有没有办法获取MCR加载的日志?MatlabDLL在哪里?您是否将c#可执行文件放入dame文件夹中?