LabVIEWで作成された.NET Interopアセンブリの特性



LabVIEW 2018ヘルプ


発行年月: 2018年3月
製品番号: 371361R-0112
製品情報を参照

ダウンロード (Windowsのみ)


LabVIEW 2015ヘルプ
LabVIEW 2016ヘルプ
LabVIEW 2017ヘルプ
LabVIEW 2018ヘルプ
LabVIEW 2019ヘルプ

他のプログラムから.NET Interopアセンブリを呼び出す

.NET interopアセンブリをビルドすると、.NETをサポートする他のプログラムからアセンブリを呼び出すことができます。ただし、他のプログラムが実行されるコンピュータが以下の要件および推奨事項を満たしていることを確認します。

  • .NET interopアセンブリを実行するコンピュータにLabVIEWランタイムエンジンをインストールする必要があります。LabVIEWランタイムエンジンは、.NET interopアセンブリと共に配布することができます。(Windows)LabVIEWランタイムエンジンは、インストーラに含めることもできます。
  • ナショナルインスツルメンツは、LabVIEWがアプリケーションをビルドする際に使用したバージョン以降の.NET Frameworkを.NET interopアセンブリ用のターゲットコンピュータにインストールすることを推奨します。
  • LabVIEW開発環境外の.NET interopアセンブリを呼び出す場合は、Microsoft Visual StudioプロジェクトでNationalInstruments.LabVIEW.Interop.dllをリファレンスする必要があります。LabVIEWランタイムエンジンは、このDLLを自動的にNational Instruments\Shared\LabVIEW Run-Timeディレクトリにインストールします。オプションとして、NationalInstruments.LabVIEW.Interop.dllを手動でGAC(Global Assembly Cache)にインストールすることができます。このDLLをGACにインストールするには、.NETアセンブリに厳密な名前のキーで署名する必要があります。
  • デバッグ可能な.NET interopアセンブリを作成する場合、LabVIEWは構成ファイル(ini)をアセンブリと同じディレクトリに配置します。別のプログラムでアセンブリをデバッグしたい場合、.iniファイルをアセンブリと一緒に配布する必要があります。

.NET InteropアセンブリにおけるLabVIEWデータタイプ

.NET interopアセンブリをビルドすると、LabVIEWは、シンプルデータタイプ(数値、ブール値、文字列、シンプルデータタイプの配列など)を対応する.NETデータタイプに直接変換します。しかし、LabVIEW特有のデータタイプ(クラスタ、波形、複素数、refnum、LabVIEWクラスなど)は、生成されたアセンブリにおいて新しい.NETデータタイプに定義される必要があります。

LabVIEWデータが.NETデータタイプに変換される方法は、.NET interopアセンブリをビルドして、Microsoft Visual Studioなどの.NETプログラミング環境でアセンブリのマニフェストを表示することにより確認できます。Microsoft Developer Network (MSDN)から使用可能なMSIL Disassemblerツールを使用して、生成されたアセンブリを表示することもできます。しかし、以下のセクションでは、LabVIEWがクラスタ、列挙タイプ制御器、LabVIEWクラスを.NETデータタイプに変換する方法について簡単に説明します。

クラスタおよび列挙体

クラスタおよび列挙体は、要素が対応する.NETストラクチャに変換されます。クラスタまたは列挙体に対応する.NETストラクチャの名前は、以下の規則に基づいて指定されます。

  • タイプ定義または指定タイプ定義として定義されたクラスタおよび列挙体―タイプ定義または指定タイプ定義のラベルが.NETストラクチャの名前となる
  • その他すべてのクラスタおよび列挙体―.NETストラクチャの名前はLVCluster_#またはLVEnum_#となる

LabVIEWクラス

LabVIEWクラスに属するVIはエクスポートできます。LabVIEWでは、これらのVIの入力は所有者であるLabVIEWクラスである必要があります。このため、これらのVIを.NET interopアセンブリにエクスポートすると、アセンブリ内に同等の.NETクラス定義が作成される必要があります。.NETクラス定義には、各メンバーVIの静的メソッドが含まれます。これらの各静的メソッドには、新たに定義された.NETクラスのインスタンスがパラメータとして必要です。所有者LabVIEWクラスのプライベートデータはエクスポートされません。

エクスポートされるメソッドVIのLabVIEWクラスの継承ストラクチャもエクスポートされます。生成された.NETクラスは、同じ継承ストラクチャです。

LabVIEWエラー

VIの.NETメソッドを生成する場合、エラー入力およびエラー出力クラスタは新しいメソッドのパラメータとしてエクスポートされません。代わりに、新しいメソッドは、実行中にエラーが発生すると.NETの例外を出力します。この例外には、エラークラスタと同じ情報が含まれています。



この記事は役に立ちましたか。

役に立たなかった