我使用存储在方法目录中的一堆方法定义了一个类。我可以实例化该类并在matlab中调用它的方法。但是,如果我尝试从.NET / COM执行相同操作,则会收到以下错误消息:
"??? Reference to non-existent field 'test'.\n\n"
此处测试是方法。
我的类派生自句柄,我尝试了两种可能性:在类文件和目录方法中定义的方法。都没有用!
非常感谢任何反馈。非常感谢。
PS:
C#代码:
MLApp.MLApp matlab = new MLApp.MLApp();
matlab.Execute("clear;");
matlab.Execute("Object = Class1();");
string test = matlab.Execute("Object.test()");
使用matlab代码:
clear;
Object = Class1();
Object.test()
PPS:
从C#代码调用时,只需仔细检查工作的Matlab脚本是否正常工作:
Matlab类定义:
classdef Test < handle
methods
function [c, obj] = add(obj, a, b)
c = a + b;
end
end % methods
end %classdef
Matlab脚本:
clear;
Test = Test();
result = Test.add(1, 3);
C#代码:
MLApp.MLApp matlab = new MLApp.MLApp();
object result;
matlab.Execute("clear;");
matlab.Execute("Test = Test();");
matlab.Execute("result = Test.add(1, 3);");
matlab.GetWorkspaceData("result", "base", out result);
答案 0 :(得分:5)
事实证明,您不能使用相同的&#39;对象实例名称&#39;作为班级名称。所以:
MLApp.MLApp matlab = new MLApp.MLApp();
object result;
matlab.Execute("clear;");
matlab.Execute("X = Test();");
matlab.Execute("result = X.add(1, 3);");
matlab.GetWorkspaceData("result", "base", out result);
作品! Mathworks提出这个错误(他们可能会在将来的版本中解决这个问题)。
基督教