シェア変数を使ったVIを実行ファイルとして配布する方法
使用ソフトウェア:
使用ソフトウェア・バージョン: 8.0
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: LabVIEW Development Systems>>LabVIEW Full Development System
問題: シェア変数を使ったVIを作成し、配布しようと思います。
ビルドした実行ファイル(.EXEファイル)を開発環境で動かした場合は正常に動作しますが、他のPCにコピーしたり、インストーラを作ってインストールしたりて実行しても、エラー -1950679022 や エラー -1950679035の ”シェア変数がみつかりません”というエラーが出て、シェア変数が正しく使えません。開発環境を接続して、プログラムを動作させた後だと、動作したりします。変数マネージャで見ると、開発環境のシェア変数にアクセスしているようです。どのようにしたら、シェア変数を使ったVIの実行ファイルをスタンドアローンで正しく動作させることができますか?
解決策: シェア変数を使ったVIを実行ファイルにして配布する場合、以下の注意点があります。
- 実行環境にシェア変数エンジンがインストールされていること
- シェア変数がシェア変数エンジンに配置(デプロイ)されていること
- シェア変数の参照先が正しいこと
上記の点を考慮し、実行ファイルのビルドと配布を行う必要があります。
以下にその手順を示します。
- シェア変数を使ったプロジェクト(.lvproj)、ライブラリ(.lvlivb)、VIを作成する
- 開発環境で動作することを確認したら、シェア変数を配置するためのプログラムをVIに追加する
アプリケーションクラス(Application Class/App Class)のインボークノードで”ライブラリを配置”メソッドを実行 する(以下の図、および、添付のサンプルのWrite.viを参照)

このとき、Lib Pathに、ライブラリファイルのパスを接続しますが、実行環境でのパスを良く考えて接続してください。 添付のサンプルでは、ライブラリファイルが実行ファイルと同じパスに存在する場合で、開発環境でも実行環境でも動作 するようにしています。
- ビルド仕様を作成し、ファイルをビルドする
必要に応じて、ビルド仕様の中で、ライブラリファイルをサポートファイルに含めます。
ここまでの操作で、LabVIEWのランタイムエンジンがインストールされている実行環境で実行できる準備が整います。特 にインストーラが必要ない場合は、実行ファイル、ライブラリファイルを実行環境にコピーし実行します。ここで、使用 するシェア変数が実行環境自身に配置される場合は、エイリアスファイルは不要です。
注意:
もし、エイリアスファイルもコピーする場合は、注意が必要です。
LabVIEW 8.0, 8.2, 8.2.1では、デフォルトのエイリアスファイル中に以下の記述があります。
[マイ コンピュータ]
マイ コンピュータ=aaa.bbb.ccc.ddd(開発環境のIPアドレス)
これは、プロジェクト中の”マイコンピュータは、aaa.bbb.ccc.dddというIPアドレスをもつPCをさす”という意味です 。したがって、この記述があるエイリアスファイルを実行環境にコピーし、実行ファイルを実行すると、シェア変数ノー ドが、開発環境のPCのシェア変数を探しにいってしまいます。これを回避するためには、エイリアスファイルを使わない ようにするか、エイリアスファイルを以下のように書き直す必要があります。(エイリアスファイルはテキストファイル なので、メモ帳などで編集ができます。)
[マイ コンピュータ]
マイ コンピュータ=localhost(または、127.0.0.1)
*localhostや、127.0.0.1は、ネットワーク上で自分自身を参照するアドレスです。
- プロジェクトのビルド仕様でインストーラのビルド仕様を作成し、インストーラを作成する
ここで、LabVIEWランタイムエンジンを含めたインストーラを作成する場合は、追加のインストーラのカテゴリで、NI変数エンジンの項目を含めてください。また、シェア変数の状態を確認したりしたい場合は、NI変数マネージャの項目も含 めてください。
添付のサンプルは上記手順で作成したサンプルプロジェクトです。(LabVIEW 8.2で作成しました)
Write.exeが、実行環境で自分自身のシェア変数エンジンに対して、自分の存在するフォルダにあるdataフォルダの中の SharedVariable.lvlibのシェア変数を配置します。配置されたVariable1というシェア変数に、乱数を書き込みます。
Read.exeは、Write.exeが書き込んだVariable1というシェア変数からデータを読み取りチャートに表示します。
エイリアスファイルに関してですが、デフォルトでは、上述したように開発環境を参照してしまうエイリアスファイルが 作成されてしまうので、デフォルトで作成されたWrite.aliases、および、Read.aliasesを自分自身を参照するように修 正して、プロジェクトに登録しています。インストーラのビルド仕様で、インストーラを作成する際に、この二つのファイルをインストーラに含むようにして、インストーラから自分自身を参照するように修正したエイリアスファイルをインストールするようにしています。
リアルタイムOS(RT-OS)を利用する場合や、ネットワークを使って、複数のPCでシェア変数エンジンを使う場合も手順は同様になりますが、どこでシェア変数を動作させるのか、その際に、実行ファイルのシェア変数ノードがどこのシェア変数エンジンを参照しにいくのかを十分考慮するようにしてください。
関連リンク: 技術サポートデータベース 43T1S7BE: Error -1950679022 Occurs When Attempting to use Shared Variables技術サポートデータベース 3UCBHM8T: How Do I Deploy Network Shared Variables From a Compiled Executable?技術サポートデータベース 48N2RE8V: エイリアスファイル(.aliases)について NI-PSP Networking Technology
添付:
ShareVariables.zip
報告日時: 04/25/2007
最終更新日: 11/25/2009
ドキュメントID: 48O0KF8V
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.