LabVIEWでEXEファイルを作成する | マーブルルール

LabVIEWでEXEファイルを作成する

その他

スポンサーリンク

この記事では、LabVIEWでEXEファイル(アプリケーション)を作成する方法を解説しています。

  • EXEファイルって何?
  • LabVIEWでEXEファイルはどうやって作るの?
  • EXEファイルを扱うときの注意点は?

という方に参考にして頂けるかなと思います。

スポンサーリンク

EXEファイルとは

EXEファイルとは、その名の通り拡張子が.exeとなっているファイルで、実行ファイルなんて呼ばれたりもします。

これは、LabVIEW(というソフトウェア)がなくても動かせる状態にしたプログラム、ということです。LabVIEW自体もソフトウェアとしてLabVIEW.exeになっていますが、これはプログラムを書くための「場所」であり、開発環境なんて呼ばれます。このLabVIEWがなくてもLabVIEWで作ったプログラムを実行することができるようにしたファイルがEXEファイルです。

気を付けなければいけないのは、確かにLabVIEWというソフトウェアそのものは必要ないのですが、LabVIEWから作成したEXEファイルをLabVIEWがインストールされていないPCで使用するにはLabVIEWランタイムエンジンというソフトウェアが必要になる点です。(LabVIEWがインストールされている環境にはこのランタイムエンジンは必ず入っているはずです)

なので、もしLabVIEWをインストールしていないPCでLabVIEWのプログラムを動かすためには

  • LabVIEWを使ってEXEファイルを作成する(ビルドする、と言います)
  • 作成したEXEファイルとともにLabVIEWランタイムエンジンおよびその他必要なドライバソフトウェア(DAQmx等)を、プログラムを動かすPC(実行環境と呼んだりします)に移す

ということが必要になります。

イメージとしては以下のような感じです(LabVIEWが入っていても実行環境と呼ぶことがあります。要は、開発をメインにしておらずEXEを走らせる環境が実行環境です)

LabVIEWで作れるのはプログラムであり、これをEXEファイルにすることはできる一方で、ランタイムエンジンやその他必要なドライバソフトウェアはどうすればいいかというと

  • National Instruments社のホームページからダウンロード
  • LabVIEWでインストーラを作成する

のいずれかの方法で用意します。

ランタイムエンジンは無料なので、これはNational Instruments社のホームページ上で「LabVIEW ランタイム ダウンロード」などと検索して入手できます。一方で、LabVIEWによってランタイムエンジンを含んだインストーラを作成することもできます(インストーラの作成については別の記事で紹介しようと思います)。

EXEファイルのビルドの仕方

では早速EXEファイルの作り方、ビルドの仕方を紹介していきます。

ここで注意。これから紹介するEXEファイルの作成については、正確にはLabVIEWのみではできなくて、Application Builderというアドオンソフトウェアがアクティブ化されていることが必要になります。LabVIEWのエディションのうち、最上位のProfessional Development Systemでは標準でこのApplication Builderが付属してくるのですが、これ以外のエディションだとアドオンソフトとして購入する必要があります。

自分がこれを持っているかわからない、という場合には、LabVIEWがインストールされているPC環境にはまず間違いなくインストールされているNIライセンスマネージャを確認します。下の図のようにApplication Builderが緑色の表示になっていたら、これが使えるということを意味しています。

さて、Application Builderがある状態で、LabVIEWで何をしてEXEファイルを作るか全体の流れは大きく次の手順になります。

  • プロジェクトを用意する
  • ビルド仕様を構成する
  • ビルドする

一つずつ見ていきます。

プロジェクトを用意する

最初はプロジェクトを用意します。普段vi単体でプログラムを作っている方にとってはプロジェクトと聞いてピンと来ないかもしれないですが、プロジェクトはEXEを作るのに絶対に必要なものになります。正式にはプロジェクトエクスプローラと呼びますが、これを作成し、そのプロジェクト内に、最終的にEXEにしたいviなどを登録していきます。

プロジェクトエクスプローラについては別記事で紹介しているのでこちらを参考にしてみてください。

必要なviが全部プロジェクトエクスプローラ上に表示されたら、このステップは終わりです。

ビルド仕様を構成する

次にビルド仕様を構成します。

ビルド仕様とは、言ってしまえば「どんな名前のEXEにして、そこにはどのviが含まれていて、どんな設定になっているのか」というEXEファイルそのものの設定のことです。

ビルド仕様の「カテゴリ」はなかなか多くあるのですが、そのうち基本的に設定するのは数個しかないので特に難しいことはないと思います。

この記事でも後で実際の流れを紹介するときには必要最小限で説明します。

ビルドする

ビルド仕様を決めたらビルド、つまりEXEファイルの作成に入ります。

ビルド仕様を決めてさえいれば、あとはビルドというボタンを押すだけの簡単なステップです。ビルド仕様でどこのパスにEXEファイルを出力するかも決めるので、その決められたパスにEXEファイルおよびこれに関連するファイルが作成されるようになります。

大まかなEXEファイルの作り方は以上です。

実際にEXEファイルを作ってみよう

では、具体的な例を交えてEXEファイルを作成してみます。

シンプルなプログラム

まずは、こんな簡単なプログラムを例にとってみます。

このメインVIの中にはサブVIが二つ、ブロックダイアグラム上に配置されており、それらは次のようなブロックダイアグラムを持つとします。

どんなに簡単なプログラムであっても、EXEファイルを作るためにはプロジェクトが必要になります。ここでは、最初からプロジェクトを用意してそこにviを登録していく場合の手順から始めます。

viはあるけれどプロジェクトエクスプローラがない場合も後からプロジェクトエクスプローラを用意することができます(既にviがありプロジェクトを後から作った場合については次のセクションにて扱います)

まずはともあれ、プロジェクトエクスプローラを用意します。そして、Ctrl + Nあるいはマイコンピュータの部分を右クリックして新規からVIを選び、プログラムを構築していきます。

プロジェクトエクスプローラを作っておいた状態で、新規のVIをCtrl + Nで作ると、それらも自動的に同じプロジェクトエクスプローラに登録されます。この要領で、メインとなるVI以外のサブVIも用意していきます。

ここで言うメインのVIとは、トップレベルのVIのことになります。ユーザーが実際に触るフロントパネルを有するVIとも言い換えられます。

さて、作り終えると、下の図のような状態になっているはずです。

ではこれをEXEにするために、プロジェクトエクスプローラのビルド仕様を右クリック、新規からアプリケーション(EXE)を選択します。

表示されるウィンドウで最初はカテゴリ「情報」が選ばれています。ここで、これから作るEXEについての情報、具体的にはEXEファイルの名前を決めます。また、EXE作成後にどこのフォルダパスにそのEXEファイルを置くかのパス設定も行います。

次に必要なのは、ソースファイル設定です。ここでは、スタートアップVIを決めます。スタートアップVIは、EXEを実行した際に表示されるフロントパネルを持ったVIです。一応二つ以上登録することもできます。

今回の場合、サブVIは「常に含む」には入れません。サブVIは、トップレベルVIのブロックダイアグラムに含まれているためです。なのでここではあくまでトップレベルVIのみ登録します。

実際はここまで済んでしまえばあとはビルドボタンを押せばEXEが作れます。なので、最もシンプルなケースではこれで終了です。

終了なのですが、後のことも考えてもう一つ、プレビューのカテゴリを見ておきます。プレビューを生成すると、ビルド後にどのようなファイルが生成されるかが表示されます。

作ったプログラムの中身によっては、このプレビュー結果が変わることがあります。

プレビューも終えたら、後は画面下のビルドのボタンを押します。OKボタンを押すとウィンドウが閉じ、ビルド仕様として設定した項目は保存されますがEXEは生成されません。あくまでEXEを生成するのはビルドボタンを押したときです。

とにかくこれで終わりです。特に難解な部分はなかったんじゃないかなと思います。

いきなり実行してほしくないプログラム

では次に、このようなプログラムをEXEにする場合にはどうでしょうか?

このプログラム、もちろん先ほどのプログラムとは異なりますが、注意しなければいけない部分があります。それは、EXEファイルを開いていきなり実行されると良くない、という点です。

なぜかというと、このプログラムの場合、正しく実行するには、どのハードウェアを使用するかという指定をする必要があるからです。ところが、EXEファイルをダブルクリックすると(デフォルトでは)開いた瞬間にプログラムが実行され、指定を行うことなくエラーでプログラムが止まってしまいます。

EXE終了後、ウィンドウを閉じるようにプログラムを組んでいない場合(組み方は後述)にはエラーを消したらEXEが再び実行できるような状態(実行ボタンが押されるまで待機する状態)となるので、そのときにパラメタを設定すればいい・・・かもしれませんが、やはりこれは気持ち悪いです。

ではどうするか。この場合、プログラム的にすぐに実行しないような作りにするということもできますが、VIプロパティで解決することができます。その方法を見ていきます。

今回は、viを先に作ってしまっていて、プロジェクトエクスプローラを後から作った場合の手順で見せていきます。といってもやり方は簡単で、プロジェクトに含めたいVIのファイルメニューからプロジェクトを作成を選択、ブランクプロジェクトを作成して追加するだけです。

これで「今現在開いている」VIがプロジェクトに追加されます。しかし、もし「今は開いていないけれどサブVIとして使っている」VIがある場合、プロジェクトに追加されないことがあるので、その場合にはプロジェクトエクスプローラ上のマイコンピュータを右クリック、「追加」で「ファイル」を選択して必要なVIを追加します。

後の流れはシンプルなプログラムの時と同じく、情報カテゴリやソースファイルカテゴリを設定します。

違いは、ソースファイル設定のカテゴリの設定です。メインのVIに対してVIプロパティをカスタマイズを選択し、開かれたら実行のチェックを外します。こうすることで、プログラムが開いても最初から実行される状態にはならず、VIの時同様、実行ボタンを押したら実行されるようになります。

あとはビルドボタンを押せばEXEファイルの出来上がりです。

動的呼び出しを行うプログラム

さて、プログラムの種類として次の例は、動的呼び出しを行うプログラムです。この場合、トップレベルVIには、呼び出されるVIのコードそのものはありません。別の言い方をすると、トップレベルのviのブロックダイアグラムにサブviが直接埋め込まれていない状態です。

VIサーバを使用している場合に当てはまります。例えば、以下のようなメインVIです。

このメインVIは、簡単なVIを呼び出して計算を実行します。

そのため、先ほどまで紹介していたような方法だと呼び出される側のプログラムがないということでエラーが起きてしまいます。

これを解消するにはどうすればいいかというと、ソース指定の部分で「常に含む」に呼び出されるVIを指定します。

さらに、今度は出力先カテゴリでサポートディレクトリを指定します。特に、呼び出されるVIがもともとメインVIの階層にあるフォルダの中に入っていた場合にはここをそのフォルダ名に設定します。

そしてそして、ソースファイル設定において、各呼び出されるVI達をサポートディレクトリに出力されるように設定します。

この状態でプレビューのカテゴリからプレビューを生成し、結果を確認してみます。すると、これまで設定したフォルダに、指定した呼び出されるVI達が入った状態でEXEのフォルダが作成されることが分かります。

あとは今まで同様ビルドボタンを押せば完成です。

EXEにしたときに注意すること

さて、いくつかのプログラムを例に、EXEファイルの作り方を見てきました。最後に、EXEファイルとしたときに気を付けるべきことをいくつか挙げます。

ファイルの指定の仕方に注意する

これが結構厄介というかうっかりミスしがちな問題です。何かというと、プログラムの中で特定のパスにあるファイルを使用する場合に、そのファイルの指定を相対パスで指定する場合に気をつけましょうねという話です。

終了時にEXE自体を閉じる

EXEファイルはVIプロパティで設定をしていなければ、EXEファイルをダブルクリックして開いたらもう実行が始まりますが、プログラム自体が終了してもウィンドウは残り続けたままになります。

プログラムが終了したらウィンドウ自体も閉じてくれ、という場合には、そのようにコードを書く必要があります。LabVIEWを終了させる関数自体はあるのですが、これを「EXEとして実行しているときのみ実行」されるようにします。

そのために、条件無効ストラクチャを使用します。

こうすることで、VIのときにはLabVIEWが終了せず、EXEのときだけLabVIEWプログラムが終了するように指定できます。

EXEが上手く動かない時には

また、どうしてもEXEが上手く動かない時があると思います。もしLabVIEW自体がインストールされていてなおかつそのEXEファイルの元になったプログラム(ソースコード)があればそれをデバッグすればいいのですが、LabVIEWはあるけれどソースコードがないという場合もあるかもしれません。

そんなときには、EXEファイルのままデバッグを行うように設定することで、ソースコードがなくてもデバッグできるようになります(ただしLabVIEWのソフトウェア自体は必要になります)。

設定は簡単で、ビルドの際に「デバッグを有効」にチェックを入れるだけです。

こうしておくと、LabVIEWからEXEの中身にアクセスできるようになります。

「マシン名またはIPアドレス」と書いてある部分は、もしEXEを動かしているPC上でLabVIEWを開いて捜査している場合にはlocalhostと書けば大丈夫です。

また、EXEを動かしているPCが別のPCである場合、そのPCのIPアドレスを入力すれば、EXEを動かしていないPCからでもリモートでデバッグします。(その際はファイアウォール等の設定に注意する必要があります)

EXEファイルは、複数のPCで似たようなことを行わせるのにとても便利です。なにせLabVIEWソフトウェアをそれぞれのPCにインストールすることなくプログラムを実行できるようになるからです。EXEファイルの作成や注意事項について自分の思う様な資料がなかったのでこのような記事を作ってみましたが、誰かの参考になればうれしいです。

ここまで読んでいただきありがとうございました。

コメント

  1. はるめる より:

    はじめまして。
    ご存じでしたらおしえてほしいのですが、ライブラリがどういった扱いになるかご存じでしょうか。

    やりたいこととしては、既存のEXEファイルで使用されているライブラリの共有変数をつかった新しいプログラムを作成したいと言うことです。
    既存のEXEファイルのソースコードがないのですが、EXEファイルに使用されているライブラリが呼び出せれば、共有変数を使用できるかと考えています。

    ご存じでしたらご教授よろしくお願いします。

    • コメントいただきありがとうございます。

      ライブラリがどういった扱いになるか、とのことですが、なさりたいこととしては、あるライブラリが使用されていることがわかっている、でもソースコードはないEXEファイルがあり、このEXEファイルから
      何らかの方法でライブラリに登録されている共有変数(シェア変数など?)を別のプログラムで使用できるようにしたい、ということになるでしょうか?
      今まで考えたことがないですが、私が今持っている知識で考える限り、「EXEファイルに使用されているライブラリ」を呼び出す(中身の変数を取り出し他のプログラムで使用する)ことはできないのではないかなと。
      思います。どのようなシェア変数やライブラリが使用されているかは、分散システムマネージャで確認出来ると思いますが・・・(それを知れたところでなさりたいことはできないのかもしれませんが)
      https://documentation.help/NI-DSM-jp/sysman_overview.html
      あまりお役に立てられず申し訳ありません。

      • はる より:

        お返事をありがとうございます。確認が遅くなりましてすみません。

        >あるライブラリが使用されていることがわかっている、でもソースコードはない
        >EXEファイルがあり、このEXEファイルから何らかの方法でライブラリに登録され
        >ている共有変数(シェア変数など?)を別のプログラムで使用できるようにした
        >い、ということになるでしょうか?

        まさにそのとおりです。
        コメントしてからもいろいろと調べてみまして、お教え頂いたページも確認しましたが、やはり難しいようです。
        いちから作り直します…。
        お考え頂きありがとうございました。

タイトルとURLをコピーしました