首頁
支援
無法在 Visual Studio 2015 中調用我用 LabVIEW 構建 Interop Assembly中帶有Array作為參數的函式
無法在 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,也不會看到上述的錯誤。
相關連結
LabVIEW Help: .NET Interop Assembly Properties Dialog Box
LabVIEW Help: Characteristics of LabVIEW-Built .NET Interop Assemblies
如何在 .NET 專案中使用 LabVIEW 建構的Shared Library?
其他支持選項
詢問NI社區
在我們的論壇中與其他用戶協作
搜索NI社區以尋求解決方案
請求工程師的支持
需要具備有效的服務合約或有效的租用版軟體,且支援選項因國家/地區而異。
打開服務請求
了解租用版軟體與服務
了解硬體服務計畫
Was this information helpful?
Helpful
Not Helpful