2010-03-04 118 views
2

我想從c#應用程序中訪問C++代碼中的地圖(枚舉,矢量< double>)。這是遺留代碼,所以我僅限於使用COM對象傳遞信息。目前,我們一次將一個枚舉傳遞給C++,並以SAFEARRAY的形式一次獲得一個向量。將C++地圖數據傳遞給c#

我嘗試傳入一個SAFEARRAY的枚舉,並返回一個SAFEARRAY SAFEARRAYs的雙打。在c#中,SAFEARRAYs的SAFEARRAY成爲一個多維數組,我真的想要一個鋸齒形數組。

  1. 有沒有辦法使用SAFEARRAYs在c#中產生鋸齒陣列?
  2. 他們是否可以使用其他方式將矢量從地圖傳遞到c#?

回答

0

我發現如何去做。我不使用SAFEARRAY的SAFEARRAY,而是使用VARIANT的SAFEARRAY。我將每個向量變成SAFEARRAY,將SAFEARRAY轉換爲VARIANT,然後將VARIANT放入一個SAFEARRAY,然後返回到c#。它產生我想要的鋸齒陣列。

0

不知您是否可以用MC++來處理編組?在.net中是不是一個矢量真的只是一個列表?在MC++中,你可以迭代並返回一個List。然後參考MC++程序集。

我沒有做太多的MC++,所以我無法確定上述情況。

+1

我希望這是一種可能性,但這是一個遺留應用程序。我可能能夠在MC++中編寫包裝器,但我需要的數據存儲在非託管的C++中。 – John

+0

是的,這就是我的意思。通過MC++包裝來處理數據的傳遞。我不是說重寫應用程序。 –

+0

你需要在中間有一個額外的圖層,這是我認爲他正試圖避免的。 –