無法在 Visual Studio 2015 中調用我用 LabVIEW 構建 Interop Assembly中帶有Array作為參數的函式

更新 Aug 24, 2023

產品資訊

軟體

  • LabVIEW 2017 Professional
  • LabVIEW 2017 Base
  • LabVIEW 2017 Full

程式語言

  • C# .NET

問題敘述

我在 LabVIEW 中建立了一個 .NET  Interop Assembly。該Assembly中有一個函式採用1D Array of Double 為參數。我能正常地從 Visual Studio 2013 和更早版本的Visual Studio 調用此函式。但從 Visual Studio 2015 開始,IntelliSense 找不到此函式。

當我嘗試手動進行調用時,程式碼無法編譯並拋出一個錯誤: type is not supported by the language。在 Visual Studio 2017 中,拋出的錯誤則是Value of type 'Double()' cannot be converted to 'Double(*)' 。如何在Visual Studio 2015 及更高版本中使用帶有Array 參數的 .NET Interop Assembly呢?

解決方案

此錯誤行為已在 LabVIEW 2017 SP1 中解決。

對於 LabVIEW 2017 及之前的版本:

為了在 Visual Studio 2015 及更高版本中使用 1D Array參數,解決方法是在 LabVIEW 中將一維陣列替換為二維陣列並重新build .NET  Interop Assembly。 Visual Studio 2015 能辨識二維陣列,如果只需要一維,.NET 程式員可以選擇忽略第二維。

相關資訊

對於 LabVIEW 2017 及之前版本:

在 LabVIEW 中建立 .NET Interop Assembly時,一維陣列表示為秩為 1 的多維陣列。在 Visual Studio 2013 及更早版本中,此資料類型被辨識為一維陣列。但是,隨著 Visual Studio 2015 的推出,不再支援這種類型。

如果您從 Visual Studio 2013 遷移到 Visual Studio 2015,並且希望避免修改您的 LabVIEW 程式集,另一種解決方法是在 Visual Studio 2013 中包裝 LabVIEW 函式調用並建立一個 class library。然後,您可以在 Visual Studio 2015 及更高版本中調用這個 class library,也不會看到上述的錯誤。