该类没有名为' ...'的属性或方法。 MATLAB错误

时间:2014-11-09 19:41:50

标签: c# matlab call .net-assembly out

我试图在MATLAB中调用C#dll。

这是我的C#dll:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace dllForMatlab
{
  public class Class
  {
    public void MultipleOut(int in1, int in2, out int out1, out int out2)
    {
        out1 = in1 * in2;
        out2 = in1 + in2;    
    }
  }
}

这是我的MATLAB代码:

NET.addAssembly('the path\dllForMatlab.dll');
in1=5;
in2=3;
[out1, out2] = dllForMatlab.Class.MultipleOut(in1, in2);

我使用MATLAB R2011b,我得到了错误“类dllForMatlab.Class没有名为'MultipleOut'的属性或方法。”

我不明白为什么我不能调用MultipleOut方法。

有没有人对这个问题的原因有所了解?

1 个答案:

答案 0 :(得分:0)

考虑以下示例

example.cs

using System;

namespace MyNS
{
    public class MyClass
    {
        public void myFunc1(int in1, int in2, out int out1, out int out2)
        {
            out1 = in1 * in2;
            out2 = in1 + in2;    
        }

        public static void myFunc2(int in1, int in2, out int out1, out int out2)
        {
            out1 = in1 * in2;
            out2 = in1 + in2;    
        }
    }
}

我们将上面的内容编译为程序集:

C:\> csc.exe /target:library example.cs

MATLAB

>> NET.addAssembly('C:\path\to\example.dll');

% static class method
>> [a,b] = MyNS.MyClass.myFunc2(10,20)
a =
         200
b =
          30

% member method
>> obj = MyNS.MyClass;
>> [a,b] = obj.myFunc1(10,20)
a =
         200
b =
          30