2011-10-20 8 views
1

LabviewでビルドされたDLLからパラメータを使用する際に問題があります。パラメータbei DLLImport from C#

私の全体のコードは次のとおりです。

namespace ConsoleApplication4 
{ 
    public class Program 
    { 

     //DLL einbinden 
     [DllImport(@"C:\DLL_Uebergabe\SharedLib.dll")] 
     public static extern void Unbenannt2(out double Amplitude, out double Reqlength); 


     public void Main(string[] args) 
     { 

      //Einbinden der .Net Interop-Assembly 
      //double Amp; 
      //Result Amplitude = new Result(); 
      //Amp = Amplitude.GetResult(); 
      //Console.WriteLine("Amplitude ist demzufolge: {0}", Amp); 

      double Amplitude; 
      double Reqlength; 
      this.Unbenannt2(out Amplitude, out Reqlength); 
      Console.WriteLine("Amplitude: {0} und Reqlength: {1}", Amplitude,Reqlength); 

     } 
    } 

}

私のコンパイラは常に言った:

"代わりに型名とそれを修飾、インスタンス参照してアクセスすることはできません"

このエラーは、コードの行で発生します

this.Unbenannt2(振幅うち、Reqlengthアウト)。

間違いを教えていただけますか?ご協力ありがとうございました。

答えて

1

ポインタはthis.ポインターなしで呼び出す必要があります。これはインスタンスメンバーではないためです。それは静的なメンバーです。

+0

ありがとうございます。 –

+0

@SteveBene:答えの1つを受け入れるのはとても親切でしょうか? – Fischermaen

1

アハハ!公開スタティック extern。簡単な使用Program.Unbenannt2またはUnbenannt2。

1

メソッドはstaticメソッドであり、インスタンスメソッドであるかのようにアクセスしようとしています。 This means is doesn't belong to an instance of your Program class.

コンパイラが示唆されているようにあなたが、代わりに型名とそれを修飾することができます。

Program.Unbenannt2(out Amplitude, out Reqlength); 

それとも、それはとにかくあなたのProgramクラスに属しているので、あなたは、単に型の名前を省略することができます

Unbenannt2(out Amplitude, out Reqlength);