作成したDLLがLabVIEW Real-Timeで動作するかを確認する方法



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

問題:
作成したDLLをNI PharLap ETSオペレーティングシステム(OS)が動作するLabVIEW Real-Timeコントローラで実行したいです。NI PharLap ETS上で動作するLabVIEW Real-Timeで実行できるDLLかどうかを確認するツールや方法はありますか?


解決策:

メモ: この情報は、NI PharLap ETSのみに関連します。

ナショナルインスツルメンツでは、C言語ベースのシェアライブラリを使用するCVI Real-Timeの使用を推奨しています。これは、最適なコンパイルおよびリモートデバッグが可能なためです。シェアライブラリがC++言語ベースの場合は、VC6、VC7コンパイラを推奨します。他のコンパイラでは、コンパイルの際にランタイムコンポーネントが静的にリンクされている必要があり、大きなDLLになるとReal-Time(NI PharLap ETS)でサポートされなくなる場合があります。

DLLがWindows OS上で動作する場合、LabVIEW Real-Time(NI PharLap ETS)でも動作する可能性があります。ただし、作成されたコードがリアルタイムOSにあるWin32サブセットを含まない関数を呼び出す場合、コードはWindows上でデプロイに失敗します。たとえば、下記のようなエラーメッセージが発生する場合があります。

デプロイ時のエラー 

添付のユーティリティを使用することで、そのDLLで呼び出す関数がリアルタイムOS対応しているどうかを判断することができます。使用しているLabVIEW Real-Timeのバージョンと一致するユーティリティのバージョンをお使いください。

判断結果として、下記に示すようにGood、Stubbed、およびBadのカテゴリがあります。


LabVIEW RT DLL Checker


  • Good: リアルタイムOSでサポートされている関数であることを示します。

  • Stubbed: 呼び出す関数はデプロイメントエラーを発生させなくても、演算がおこなわれずにデフォルト値が返ってしまう可能性があることを示します。そのため、スタブ関数からの適切な出力に依存したコードは、想定どおりに動作しない場合があります。

  • Bad: 関数がOSで実行できないことを示します。実行できない関数を呼び出すコードをデプロイすることはできません。

LabWindows/CVIには、LabVIEW Real-Time環境用のDLLを作成する機能が搭載されています。DLL を作成する際は、Build » Target SettingsよりRun-Time Supportの項目でLabVIEW Real-Time Onlyを選択します。CVIは、不正な関数呼び出し、非対応の関数呼び出しを簡単に確認することができます。CVIがない場合は、LabVIEW Real-Timeで正しく実行するため下記に添付のユーティリティを使用して作成したDLLの対応状況を確認します。

LabVIEW Real-Timeで利用可能なDLLを作成方法については、関連リンクを参照してください。

メモ: このユーティリティが依存DLL(例: wsock32.dll)を要求する場合、リアルタイムターゲットまたは<National Instruments>/RT Imagesに存在するバージョンを必ず使用してみてください。これらのDLLは、同じ名前であるにもかかわらずWindows DLLと異なることがあります。



DLL Checkerの自動化

DLL Checkerバージョン2013以降は、引数を追加して実行することで、.dllを確認してその結果を含むログファイルの保存パス先に書き出すことができます。これにより、ユーザはLabVIEWのようなコマンドラインを呼び出すバッチスクリプトやプログラムを使用して、確認プロセスを自動化できます。

引数を渡す方法は、以下のとおりです。

-- -d "<path to dll>" -l "<path to log file>" -include "<path to DLL includes>"

下図は、LabVIEWで確認を自動化する例です。

 


-d "<dllのパス>" - 確認したいdllのパスを記入します。

-l "<ログファイルのパス>" - 確認した際の結果ログを保存するパスを記入します。引数で記入したログファイルのパスが存在しない場合、記入した名前を使用して新しいファイルが作成されます。

-include "<依存DLLのパス>" - DLL checkerはデフォルトで、-dフラグで記載したの-dメイン.dllのみ確認します。依存DLLを確認するには、-includeフラグを使用する必要があります。このフラグを使用して他のDLLのディレクトリを記入することで、DLL checkerはそれらも合わせて確認します。



関連リンク:
技術サポートデータベース 4LRA4IQ0: Real-Time コントローラのオペレーティングシステム (OS)
技術サポートデータベース 320HIP2Y: How Can I Debug a DLL in LabVIEW RT?
技術サポートデータベース 3GD9T8SU: Can I Use MS Visual C++.NET (7.x) To Build DLLs Using the Real-Time Workshop for NI Real-Time Targets?
チュートリアル: Using LabWindows/CVI DLLs in LabVIEW Real-Time Applications

添付:

DLL Checker 7.0.exe
DLL Checker 7.1.1.exe
DLL Checker 8.0.exe
DLL Checker 8.2.exe
DLL Checker 8.5.1.exe
DLL Checker 8.6.exe
DLL Checker 2009.exe
DLL Checker 2010.exe
DLL Checker 2011.exe
DLL Checker 2012.exe
DLL Checker 2013.exe
DLL Checker 2014.exe 






報告日時: 07/23/2004
最終更新日: 07/14/2016
ドキュメントID: 3BMI76L1