NI製品ディスカッション

cancel
Showing results for 
Search instead for 
Did you mean: 

.NET Interop アセンブリをC#で使う

Solved!
Go to solution
Highlighted

いつもお世話になっております。

 

LabVIEWで作った.NetアセンブリをC#(visual studio)から使おうとしてます。

まずは、LabVIEW2011で.Netアセンブリを作成して、LabVIEW2011で実行できるところまでたどり着きました。
(添付ファイル:dll3_Lv2011.zip)

 

visual studioから使おうとするとクラスは参照できるのですが
additionメソッド(引数二つを加算して戻り値として返す)が無い^^;(Equals以降のメソッドは参照可)

additionの前の[S]が気になっているのですがよくわかってません。
(添付ファイル:dll3.png)

 

ご指導いただければ助かります。

 

Download All
0 Kudos
Message 1 of 7
(222 Views)
Highlighted

プロジェクトを手元のLabVIEW 2017で再ビルドしてVisual Studio 2019から呼んだところ、

一応期待された動作をしているように見受けられます。

 

されたいことは以下の画像のようなことで間違いありませんか?

お手元では、additionメソッドが補完として表示されない状態でしょうか?

 

Result.PNG

 

Emboar
Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
0 Kudos
Message 2 of 7
(181 Views)
Highlighted

Emboar_Dymax様

 

確認していただきありがとうございます。

visual studio 2010(vs2019も同じ)やってみたのですが
additionメソッドがメンバーで無いと怒られるのですよね(添付ファイル)

 

 

0 Kudos
Message 3 of 7
(162 Views)
Highlighted
Solution
Accepted by topic author su-sann5073

検討違いなお話でしたら大変申し訳ないのですが、この場合の"addition"は静的メソッドなので、

インスタンスではなく、クラスに属するメソッドになるのではないでしょうか?

インスタンスでなければ、メソッドは使えるようです。

 

static.png

 

 

Invoke Nodeの先頭についている"[S]"はStaticの"S"?

LabVIEWからdllを呼び出す際は、[S]がついているメソッドはコンストラクタノードは不要でした。

[S]がついていなければ、エラーになります。

 

addition.PNG

 

error.PNG

 

 

Build .NET Interop Assembly
このスレッドも併せて読んでいて、そのような考えに至りました。

 

Emboar
Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
0 Kudos
Message 4 of 7
(149 Views)
Highlighted

Emboar_Dymax様

 

なるほど、静的使うんですね(よく見ると、Emboar_Dymax様のサンプルもそうなってました)
後、LabVIEW2011だと.net frameworkのバージョンを2.0~3.5じゃないと対応して無いみたいで
変更したら動きました。

 

LabVIEW 2017の環境は別途あるので .net 4の件は確認しようと思ってます。

LabVIEWのバージョンと.net frameworkのバージョンの対応があるようですが

 

その情報見つけれると非常にありがたいのです。

0 Kudos
Message 5 of 7
(113 Views)
Highlighted

@su-sann5073 wrote:

LabVIEWのバージョンと.net frameworkのバージョンの対応があるようですが

その情報見つけれると非常にありがたいのです。


試していない状態でご案内差し上げ申し訳ないのですが、

LabVIEWのconfigをいじることで、どのバージョンの.NETを使用するか選べるようです。

Loading .NET 2.0, 3.0 and 3.5 Assemblies in LabVIEW (KB)

Loading .NET 2.0, 3.0, and 3.5 Assemblies in LabVIEW (HELP)

KBの方に

For example, LabVIEW 2017 uses the .NET CLR 4.0 by default which allows it to use up to the .NET Framework 4.6.2, while LabVIEW 2012 uses the CLR 2.0 by default which only allows it to use up to the .NET 3.5 framework.

とあるので詳細リストが欲しかったのですが、私の力では見つかりませんでした。

TestStandであれば、このドキュメントが近いかと思いますが... TestStand and .NET Framework Compatibility

 

すみません...

Emboar
Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
Message 6 of 7
(99 Views)
Highlighted

Emboar_Dymax様

 

「NI TestStand with .NET and Visual Basic Compatibility Table」情報ありがとうございます。
「.net frameworkに関連した情報」求めていたのはこれですね。(私が検索したものより情報が細かいです)

これで「.NET Interop アセンブリ」サンプル作成すすめられそうです。

 

ありがとうございました。

 

0 Kudos
Message 7 of 7
(69 Views)