當使用在 LabVIEW PPL 中呼叫第三方 DLL 的VI時 TestStand Crashes

更新 Jul 25, 2023

產品資訊

軟體

  • TestStand

程式語言

  • C
  • C++

問題敘述

  • 我建立了一個 LabVIEW Packed Project Library (PPL),其中包含一個呼叫第 3 方 DLL 的 VI。 該VI 在 LabVIEW 中執行沒有問題,但是當我透過引用 TestStand 中的 PPL 路徑呼叫 VI 時,TestStand  crashes了。
    我在 LabVIEW 中使用 Call Library Function Node 呼叫 DLL。當我在 TestStand 中放置一個 Action Step 時,它在嘗試載入 VI 時 crash 了。

解決方案

這種 crash 可能是由多種因素引起的。以下步驟有助於解決問題。
注意:如果 DLL 由第三方開發,NI 不對其與 TestStand 的交互方式負責。請聯繫 DLL 的開發人員以了解該 DLL 的工作原理。
  • 從 PPL 中刪除呼叫 DLL 的 VI,並嘗試使用 VI 的路徑而不是 PPL 的路徑將其載入到 TestStand。
  • 確保已將 DLL 設定為使用 C 或 stdcall 呼叫約定。
    • 不支援其他呼叫約定,將導致 crash。
  • 檢查 DLL 是否嘗試建立任何文件或資料夾。
    • 一些 DLL 會建立 log檔用於debug用。如果 DLL 嘗試在 TestStand 應用程式目錄中產生此檔案,則可能會因權限不足而發生 crash。
  • 為 TestStand 產生一個 WinDbg Dump 檔案。