メソッドディレクトリに格納された一連のメソッドを使用してクラスを定義しました。クラスをインスタンス化し、matlab内でそのメソッドを呼び出すことができます。ただし、.NET / COMから同じことを実行しようとすると、次のエラーメッセージが表示されます。
"??? Reference to non-existent field 'test'.\n\n"
ここでテストは方法です。
私のクラスはhandleから派生しており、クラスファイルで定義されたメソッドとディレクトリメソッドの両方の可能性を試しました。どちらも機能しません!
フィードバックをいただければ幸いです。どうもありがとう。
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);