2012-08-07 477 views
3

我一直在尋找一種方法來調用從C++ DLL項目中編寫的C#EXE項目(VS 2008)中的函數。如果可能的話,我可以將C#代碼作爲C++項目本身的一部分。我所能找到的所有東西都是從C++調用C#DLL。從C++調用C#

最終我想從VB6調用C#代碼,但我這樣問這個問題,因爲我不相信後面的方式是可能的,沒有中間步驟。

感謝,

伊恩

回答

6

最後,我想打電話從VB6 C#代碼,但我問這樣的問題,因爲我不相信以後的路可能沒有一箇中間步驟。

您可以將C#類註冊爲COM可見,然後直接從C++或VB6調用它們。

有關詳細信息,請參見MSDN上Example COM Class,以及Interoperability

+0

我以前做過這個。這是可怕的,但可行。 – mydogisbox 2012-08-07 17:57:12

+0

@mydogisbox對於從VB6進行調用,這是迄今爲止最簡單的選項......對於使用C++,C++/CLI更容易 - 但如果唯一的目的是在VB中使用,這並不是真的可怕 – 2012-08-07 18:14:51

+0

謝謝,但我寧願做的事情就是包裝C#代碼,以便稍後通過VB調用它。它不一定是C++,我只想要一切都在DLL中。有任何想法嗎?再次感謝。 – 2012-08-07 18:18:34

1

您可以使用/ CLR選項編譯您的C++項目,然後在其中調用C#。要做到這一點,你需要包含vcclr.h,然後爲每個你需要調用的dll添加一個using語句。

#include <vcclr.h> 
#using <System.dll> 
+0

爲避免必須使用/ clr重新編譯整個項目,您還可以開發一個使用C++/CLI編寫的程序集/ DLL,將非託管接口公開給您的C#代碼 – 2012-08-07 17:50:13