From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

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

解決済み
解決策を見る

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

 

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

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

 

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

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

 

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

 

すべてをダウンロード
0 件の賞賛
メッセージ1/7
1,663件の閲覧回数

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

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

 

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

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

 

Result.PNG

 

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

GCentral
0 件の賞賛
メッセージ2/7
1,622件の閲覧回数

Emboar_Dymax様

 

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

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

 

 

0 件の賞賛
メッセージ3/7
1,603件の閲覧回数
解決策
受理者 su-sann5073

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

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

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

 

static.png

 

 

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

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

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

 

addition.PNG

 

error.PNG

 

 

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

 

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

GCentral
0 件の賞賛
メッセージ4/7
1,590件の閲覧回数

Emboar_Dymax様

 

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

 

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

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

 

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

0 件の賞賛
メッセージ5/7
1,554件の閲覧回数

@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

 

すみません...

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

GCentral
メッセージ6/7
1,540件の閲覧回数

Emboar_Dymax様

 

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

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

 

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

 

0 件の賞賛
メッセージ7/7
1,510件の閲覧回数