我用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();
}
}
}
这个程序在多台电脑上运行,但在一台电脑上我有:
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:UsersUsersourcereposTestConMatlabProgram.cs:line 18
当然,我已经安装了相同的Matlab MCR v8.0。我已经用procmon跟踪了一些API调用,但我并没有找到解决方案。
我已经删除了文件夹C:\Users\%USER%\AppData\Local\Temp\%USER%\mcrCache8.0删除MCR并手动删除C:\Program Files(x86(\MATLAB,重新启动后,程序工作!