LabVIEWでDLLをロードする際に問題が発生しました。
LabVIEWを使用して流量計に接続しています。この目的のために、流量計を製造している会社からサブVIのライブラリを提供してもらいました。これらの各サブ VI は、同社が提供する 2 つの DLL ライブラリのいずれかから関数を呼び出します。
したがって、これらのサブ VI の半分は 1 つの DLL に依存し、残りの半分は他の DLL に依存します。最初の DLL を使用するものは問題なく動作し、問題はありません。しかし、2 番目の DLL を使用するものには何らかのバグがあります。これらのサブ VI のいずれかを開くたびに、次のようなポップアップ ウィンドウが表示されます。
「絶対パス\name.dll」のロード中にエラーが発生しました。DLL ライブラリの初期化ルーチンが失敗しました。
その場合、サブ VI は実行できず、実行ボタンはひび割れとして表示されます。しかし、ひねりがあります。「configure library function node」を右クリックして「Configure」を選択し、適切なフィールドでまったく同じdll 絶対パスを再度選択してから「OK」をクリックすると、サブ VI は完全に正常に動作し、本来の動作を正確に実行します。ノード構成ウィンドウで実際には何も変更せず、同じパスを再選択するだけです。さらに奇妙なことに、この奇妙な「トリック」は約 75% の確率でしか機能しません。残りの 25% の時間は、VI とそれを参照する他の VI を実際に閉じてから、再度開く必要があります。
そして、私にはさらに意味のない別のひねりがあります。会社は、さまざまなサブVIを相互に関連させて使用する方法を示す「サンプルVI」もいくつか送ってくれました。これらの例は完全にうまく動作します! しかし、その後、「サンプル VI」の単純なバージョンである独自の VI を作成しましたが、DLL ロード エラーが発生し続けます。
ライブラリ関数ノードを毎回再構成せずにVIが実行可能であることを確認するにはどうすればよいですか? 問題の原因は何だと思いますか?
注意: 問題の一部は、DLL の読み取りが labview でどのように機能するかをよく理解していないことです。そのため、それに関する情報も大歓迎です。