2011-10-20 82 views
10

我有一個用C++/cli編寫的windows窗體應用程序。我想用一些新的表單擴展這個應用程序,我想用C#在一個單獨的項目中創建它們。在同一解決方案中的C#項目和C++項目之間進行交互

是否可以簡單地將C#項目添加到具有C++項目的解決方案中,並且兩者將進行交互?通過交互,我的意思是說,單擊在c#項目中編寫的表單上的按鈕將能夠調用C++項目中的方法。或許以另一種方式提問,C#項目中的對象可以引用C++項目中的對象嗎?如果是這樣,你知道一個示例代碼讓我開始?

謝謝。

回答

5

是的。 C++/CLI應用程序可以通過以下兩種方式之一與C#應用程序進行交互:

如果您使用CLI擴展(從您的帖子中聽起來像是這樣),您將能夠編寫代碼新對象的引用:

管理對象:System::String^ myString(在C++)是在C# 管理參相同string myStringSystem::String% myString相當於ref string myString

如果你想使用C++本地類型,那麼你將不得不使用P/Invoke,但這是一個完全不同的類別。對於你想做的事情,只需將C++項目添加爲C#項目的引用,使用託管類型在C++中編寫一個公共可見的類,然後編譯。然後,您的項目應該在您爲C++類選擇的任何名稱空間中對您的C#類可見。

編輯:哦,如果您需要通過C++分配託管對象,則需要使用gcnew而不是new

相關問題