[英]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.