VIは正常に動作しますが、実行ファイル(exe)にするとエラー-7が発生します



使用ソフトウェア:
使用ソフトウェア・バージョン: 7.1.1
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A

問題:
LabVIEWでVIを実行すると、プログラムを動かすと正常に動作します。しかし、実行ファイル形式(exe)にコンパイルして実行すると「エラー: -7」が発生していまいます。なぜでしょうか?


解決策:
エラー-7は、プログラムが指定したファイルパスが見つからないことにより起こります。ですが、LabVIEWで作成したプログラムでは正常にファイルの読み込みが指定したファイルパスからできているのに、なぜ実行ファイルではできないのでしょうか。

LabVIEWのプログラムに「現在のVIパス」関数が使用されている場合、このエラーの原因は「現在のVIパス」関数であると考えられます。

「現在のVIパス」関数は、実行されているVIのファイルパスを出力します。例えば、c:\test.viというファイルパスをもつVIがあり、このVI内部で「現在のVIパス」関数を使用すると出力はもちろん「c:\text.vi」となります。

それではこのtext.viの実行ファイルをApplication.exeという名前で作成し、同じようにc:\Application.exeの位置におきます。このexeファイルを実行すると、出力は「c:\Application.exe\text.vi」となりファイルパスがひとつ増えてしまいます。

このため「現在のVIパス」関数を使用している場合は、実行ファイル作成時に変更する必要があります。例えば、LabVIEWでVIと同じフォルダに存在するテキストファイルにアクセスするには、以下のように「パスをストリップ」関数を1つだけ使用して、続いて「パス作成」を用いてテキストファイル名を追加し、ファイルパスを作成します。

例1: VIとして実行時、1度だけストリップするのは適切
c:test.vi » c: » c:text.txt

Strip Path関数を1つ使用するのは、VIファイルで実行する場合です。

しかし、これをこのまま実行ファイル(exe)にしてしまうと、パスが一つ追加されてしまうため、以下に示すような不適切なファイルパスが作成されてしまいます。

例2: exe実行時、1度だけストリップでは不適切
c:\Application.exe\test.vi » c:Application.exe » c:\Application.exe\text.txt

ファイルパスが不適切なため、エラー-7が発生してしまいます。不適切なファイルパスが作成されることを防ぐには、ファイルパスが追加されることを考慮して実行ファイル作成前に「パスをストリップ」関数をもう1つ追加します。これにより、正常なファイルパスが作成され、エラーを防ぐことができます。

例3: exe実行時、2度ストリップすれば適切
c:\Application.exe\test.vi » c:\Application.exe » c: » c:\text.txt



関連リンク:
技術サポートデータベース 2N993VFT: Why Do I Get Error 7 When Building an Executable from a Build Script?
技術サポートデータベース 3G5CDDV1: Microsoft Office用レポート生成ツールキットを使用した実行ファイル(exe)を実行する際のエラー-7について


添付:





報告日時: 01/24/2005
最終更新日: 04/10/2017
ドキュメントID: 3HNA6IBP