簡體   English   中英

在同一解決方案中在C#項目和C ++項目之間進行交互

[英]interacting between a C# project and C++ project in same solution

我有一個用C ++ / cli編寫的Windows窗體應用程序。 我想用一些新的表單擴展這個應用程序,我想在一個單獨的項目中用C#創建它們。

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

謝謝。

是。 C ++ / CLI應用程序將能夠以兩種方式之一與C#應用程序進行交互:

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

托管對象: System::String^ myString (在C ++中)與C#中的string myString相同string myString refs: System::String% myString相當於ref string myString

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

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

這可以通過使用C ++項目編譯dll,然后讓C#app加載該dll然后它將能夠調用其導出的函數來完成。 此方法允許您的C ++代碼是非托管代碼。

至於找到已經設置的樣本,我只能找到一個Visual Studio 2008項目: Microsoft All-in-One Code Framework

對於visual studio 2010,這里是如何做C ++方面: 如何使用C ++ 在C ++中使用顯式PInvoke 創建一個dll

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM