エラー 7: 現在のVIのパス定数を使用すると実行可能ファイルでエラーが発生する

更新しました Oct 19, 2023

使用製品

ソフトウェア

  • LabVIEW Application Builder Module

問題

現在のVIのパス定数を使用していて、所有ディレクトリにアクセスするためにVI名を取り除いています。このコードは開発環境で動作しますが、VIを実行可能ファイルにビルドすると、エラー 7が新しいファイルで発生しました。が発生するなど、いくつかの問題があります。

実行可能ファイルとして配布する再に変更を避けるには、VIをどのようにビルドすればよいですか?

解決策

LabVIEW 2009以降では、アプリケーションディレクトリVIを使用できます。

このVIをスタンドアロンアプリケーションから呼び出すと、このVIはスタンドアロンアプリケーションを含むフォルダへのパスを返します。このVIを開発環境から呼び出し、VIがLabVIEWプロジェクトファイル(.lvproj)にロードされている場合、このVIはプロジェクトファイルを含むフォルダへのパスを返します。プロジェクトが保存されていない場合、このVIは<無効パス>を返します。 最上位VIがプロジェクトにロードされていない場合、VIは最上位VIを含むディレクトリのパスを返します。VIがディスクに保存されていない場合、このVIは<無効パス>を返します。

LabVIEW 2009以前のバージョンでは、アプリケーションプロパティノードを使用して、プログラム的に実行している環境を判断し、その結果に基づきパスをストリップ関数を1回または2回実行することができます。下のスクリーンショットでは、この方法を示しています。

もう1つのオプションは、実行可能ファイルの実行ディレクトリを見つけるためにアプリケーションディレクトリプロパティノードを使用することです。

一番左のVIは、VIを開く(このVI)リファレンスではなくアプリケーションを開く(このアプリケーション)リファレンスです。また、このプロパティは実行中のLabVIEW実行ファイルを検索するため、開発時にこのプロパティは現在のLabVIEWインスタンスへのパスを返します。

追加情報

現在のVIのパス関数は、VIの名前を含む絶対パスを返します。このパスは、VIがLabVIEW開発環境で実行されているかスタンドアロンアプリケーションで実行されているかによって異なります。LabVIEWは、スタンドアロンアプリケーションに関連付けられたすべてのVIを、実際には実行可能ファイルそのものである余分なレイヤにラップします。

ハードドライブのルートディレクトリ(例えば、C:\)にApplication.viという名前のVIがあるとします。LabVIEW開発環境では、現在のVIのパス関数は以下のパスを返します。

C:\Application.vi

ここで、同じVIをMyApplication.exeという名前のスタンドアロンアプリケーションに組み込んでみましょう。実行すると、現在のVIのパス関数は次のようにパスを返します。

C:\MyApplication.exe\Application.vi

上記のように異なるファイルパスを返すため、開発環境で実行しているかスタンドアロンの実行可能ファイルで実行しているかによって、パスを別々に取り除く必要があります。

問題への手作業によるアプローチは、.exeのパスを検索することです。パスに存在しない場合は、パスを一度削除して所有ディレクトリを取得するだけです。 パスにパスが存在する場合は、パスを2回削除して所有ディレクトリを戻す必要があります。