07-21-2020 03:12 AM
いつもお世話になっております。
LabVIEWで作った.NetアセンブリをC#(visual studio)から使おうとしてます。
まずは、LabVIEW2011で.Netアセンブリを作成して、LabVIEW2011で実行できるところまでたどり着きました。
(添付ファイル:dll3_Lv2011.zip)
visual studioから使おうとするとクラスは参照できるのですが
additionメソッド(引数二つを加算して戻り値として返す)が無い^^;(Equals以降のメソッドは参照可)
additionの前の[S]が気になっているのですがよくわかってません。
(添付ファイル:dll3.png)
ご指導いただければ助かります。
Solved! Go to Solution.
07-21-2020 09:07 PM
07-22-2020 02:56 AM
Emboar_Dymax様
確認していただきありがとうございます。
visual studio 2010(vs2019も同じ)やってみたのですが
additionメソッドがメンバーで無いと怒られるのですよね(添付ファイル)
07-22-2020 04:05 AM
検討違いなお話でしたら大変申し訳ないのですが、この場合の"addition"は静的メソッドなので、
インスタンスではなく、クラスに属するメソッドになるのではないでしょうか?
インスタンスでなければ、メソッドは使えるようです。
Invoke Nodeの先頭についている"[S]"はStaticの"S"?
LabVIEWからdllを呼び出す際は、[S]がついているメソッドはコンストラクタノードは不要でした。
[S]がついていなければ、エラーになります。
Build .NET Interop Assembly
このスレッドも併せて読んでいて、そのような考えに至りました。
07-26-2020 09:12 PM
Emboar_Dymax様
なるほど、静的使うんですね(よく見ると、Emboar_Dymax様のサンプルもそうなってました)
後、LabVIEW2011だと.net frameworkのバージョンを2.0~3.5じゃないと対応して無いみたいで
変更したら動きました。
LabVIEW 2017の環境は別途あるので .net 4の件は確認しようと思ってます。
LabVIEWのバージョンと.net frameworkのバージョンの対応があるようですが
その情報見つけれると非常にありがたいのです。
07-27-2020 02:22 AM
@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
すみません...
07-30-2020 07:56 PM
Emboar_Dymax様
「NI TestStand with .NET and Visual Basic Compatibility Table」情報ありがとうございます。
「.net frameworkに関連した情報」求めていたのはこれですね。(私が検索したものより情報が細かいです)
これで「.NET Interop アセンブリ」サンプル作成すすめられそうです。
ありがとうございました。