2013-05-01 87 views
0

編輯,因爲我更好地理解這個問題。對不起VBBSD和早期混淆VB.NET和VBA是否有任何工作進入擴展mono-VB的框架?

我正在探索採用大型VBA代碼庫(在Excel中託管)並將其作爲編譯代碼(vbnc)遷移到嵌入式Linux的可行性。我們目前在Windows上構建的應用程序利用了通過Microsoft COM擴展VBA的功能。我們擁有可以通過這種方式訪問​​的C#.NET類和非託管C++類。

據我所知,mono vbnc不支持通過COM訪問外部庫。還有什麼其他方式可以訪問外部代碼?

從Rolf的初步答案看,似乎有兩個: 1)使用P/Invoke訪問外部Linux庫。我會試驗這個。 2)將組件重寫爲託管代碼。

看來也許是最好的解決方案,因爲我的C#/ C++混合可能會使用兩者。但我不清楚上面#2的機制。有沒有可能指出一個例子或詳細說明?我看到很多關於如何使用P/Invoke的例子。

再次感謝,提前!

+1

爲什麼不使用.Net? (例如,MEF) – SLaks 2013-05-01 22:18:16

+1

我覺得這個帖子有一些有用的信息: http://stackoverflow.com/questions/11895630/interop-with-native-libraries-in-linux – rivimey 2013-05-01 22:34:37

+0

回覆:爲什麼不直接使用。淨 - 在Linux平臺上執行此操作 – 2013-05-02 03:04:26

回答

2

在Linux上運行COM/OCX組件是不可能的,所以VB.NET不能支持這個。

你有兩個選擇,如果你想在Linux上運行,你現在是COM/OCX:

  • 查找不相同,您現有的COM/OCX庫本地Linux庫,然後用來自VB.NET的那些庫(您需要使用P/Invokes綁定到本地庫)。

  • 將COM/OCX組件重寫爲託管代碼。

+0

Hi Rolf,感謝您的快速回復。我已經研究過P/Invoke,並且今天將在我的mono-VB設置中嘗試這個。我不清楚你的意思是'將組件重寫爲託管代碼'。我將探索更多,對不起,我不是一個.NET或Windows託管代碼專家。我想你是在說如果我將擴展名編寫爲C#.NET,那麼我將能夠從vb-mono訪問這些類。仍然在調查...... – 2013-05-02 21:16:22

+0

正確,您需要重寫您當前在VB.Net或C#中使用的COM/OCX代碼。 – 2013-05-03 12:46:12

相關問題