アプリケーション(EXE)がプラグインを正しく動的に呼び出しません

更新しました Nov 23, 2019

使用製品

ソフトウェア

  • LabVIEW Application Builder Module

問題

アプリケーションをビルドし、プラグインアーキテクチャを使用して、将来作成するVI(プラグイン)を動的に呼び出すことができるようにしています。このアプリケーションはLabVIEW開発環境で正常に動作しますが、実行ファイルとしては動作しません。
 

実行ファイルを実行すると、次のいずれかが発生します。
 

  • プラグインが呼び出されなかったかのように、アプリケーションでは何も行われません。
  • VIが実行可能でないことを示すエラー1003 が発生します。
  • 「見つからない」サブVIを見つけるように求めるダイアログが表示されます。

解決策

この問題を解決するために使用できる方法が、下記のとおりいくつかあります。

 

 

方法 1: プラグインと同じディレクトリにサブVIを含める

プラグインが使用するサブVIをプラグインと同じ場所に保存します。プラグインと同じディレクトリにあるフォルダにこれらのサブVIを含めることもできます。これは、実行ファイルのデフォルトのVI検索パスに実行ファイルとそのサブディレクトリのパスが含まれているため機能します。

メモ: サブ-サブVIなど、VIのすべての依存関係を含める必要があります。

 

 

 

方法 2: LLBプラグインをLLBとして保存する

ファイル>>別名で保存>>新規LLB...を選択して、プラグインをLLBとして保存します。これにより、すべてのサブVI(参照するvi.lib VIを含む)が1つのLLBファイルに自動的に保存されます。LLB作成の詳細については、すべてのサブVIを自動的に含むLabVIEW VIライブラリを作成するにはどうすればよいですか?を参照してください。

 

 

 

方法 3: LLBプラグインを単一のトップレベルVIとして作成し、サブVIをLLBとして保存する

これは、方法1と方法2の組み合わせです。まず、通常どおりトップレベルVIを保存します(つまり、MyVI.vi.)。次に、方法2で指定されているようにVIを保存します(つまり、MyVI.llb)。これにより、サブディレクトリ(MyVI.llb)が作成され、必要なサブVIが含まれます。

メモ: llbには、トップレベルVIの別のコピーも含まれます(つまり、MyVI.vi.)。これは何も影響はありませんが、ツール>>LLBマネージャ...に移動してllbファイルからコピーを削除できます。

 

 

 

方法 4: 実行ファイルのVI検索パスの一部としてサブVIのディレクトリを明示的に指定する

プラグインのサブVIを含むマシンで実行ファイルを実行している場合、実行ファイルのVI検索パスの一部としてサブVIのディレクトリ(つまり、vi.lib)を指定できます。そのためには、実行ファイルのiniファイルに次の行を追加します。

 
viSearchPath="C:\Program Files\National Instruments\LabVIEW \vi.lib ; C:\AnotherDirectory ; etc."
 

実行ファイルのVI検索パスの変更の詳細については、LabVIEW実行ファイルのVI検索パスを変更または設定するには?を参照してください。

 

 

 

方法 5: ソース配布をビルドする

プラグインVIのソース配布を作成します。プラグインのすべての依存関係を含めるには、ソース配布プロパティのその他の除外項目カテゴリで、以下のチェックボックスからチェックを外します。

 

 

追加情報

この問題は、プラグインVIが動的に呼び出される際に、メインレベルの実行ファイルがプラグインの依存関係を見つけられないため、実行できないからです。たとえば、プラグインがvi.lib VI(シンプルエラー処理VIなど)を使用する場合、これらのVIを見つける方法をトップレベルの実行ファイルに何らかの方法で伝える必要があります。
 

LabVIEW開発環境でトップレベルアプリケーションを実行している場合、この問題は発生しません。これは、vi.libディレクトリがVI検索パスの一部として指定されているためです(ツール>>オプション>>パスカテゴリ>>VI検索パス)。しかし、デフォルトでは実行ファイルには含まれていません。