2013-02-19 83 views
1

使用VS2010 express。用C#編寫我認爲是面嚮對象語言的一個很好的中間步驟。讓我的代碼有點重複的一件事是無法在C#中使用多個類繼承。即我不能說A類繼承了B類 C類。在Visual Studio Express 2012 for Windows桌面(Windows 7)中組合C++和c#項目

c#非常棒,因爲您可以快速輕鬆地獲得帶有按鈕文本框的窗口並撥號並運行。由於沒有包含MFC庫,因此在Express版本中,這不適用於C++。

現在,我想到了一個C#前端,它將參數保存到一個文件中,然後執行一個讀取文件的C++,運行並保存一個文件,然後用另一個(或相同)c#後端exec閱讀和播放結果。但是如果你想改變某些東西的話,總會再次執行整個序列,這會使它變得很麻煩。更不用說調試了,可能需要運行實例。

閱讀Visual Studio 2012 Express的桌面通告,它指出:「您還可以將C++,C#和Visual Basic項目組合到一個單一的解決方案中,使用任何可用的編程工具輕鬆編寫單個應用程序語言「。 http://blogs.msdn.com/b/visualstudio/archive/2012/09/12/visual-studio-express-2012-for-windows-desktop-is-here.aspx?PageIndex=3

現在我會很高興,畢竟我不期望和不需要在這個階段做任何wizbank的東西,即特殊的按鈕功能/設計,這是更容易和MFC提供的C + +。

我的問題是:有沒有人在Windows 7的Windows桌面版Express中的Visual Studio 2012中試過這個?我可以結合一個C++和一個C#項目進行交互,例如在調試時將一個項目的代碼跟蹤到另一個項目?有什麼特別的限制嗎?我的意思是,如果它的組合可執行文件只有它沒有多大用處,但我期望它不止這些,但還有多少?例如,在C#中設計的對象是否可以在C++中設計一個對象,將其傳遞給其他對象,例如類,它們保存輸入和輸出或者在C++類中處理並且仍然可以在c#代碼中訪問以顯示結果等的數據。

我在下載新的快速版本之前詢問了這個問題,因爲我期望它會讓我回到從C#到C++的幾個月後,我認爲就像從Visual Basic到C一樣。我不想進入所有的麻煩(我不介意真的,但它會是巨大的退後一步),以找出我不能「將」ac#前端與C++處理解決方案集成在一起。

+0

除非你正在做一些對性能至關重要的事情,或者試圖與現有的C++代碼進行接口,否則我會推薦完全使用C#。該語言在很多方面與C++非常接近,不會給切換帶來很多麻煩。 – 2013-02-19 16:07:20

+0

目前沒有接口,但它第二次我錯過了多重繼承。我正在做的是研究相關的,所以我期望進行調試,重複代碼會使事情變得危險。這也是性能的關鍵。我對c#沒有任何抱怨,它的速度不夠快,並行性也是奇蹟。它不會介意提高性能,有些東西需要5-10分鐘才能在雙核上運行,即使在parallel.for等等的情況下,但高效的編碼是我所想的,而C++學習的成本和複雜性當然是@黑暗獵鷹 – TDo 2013-02-19 16:21:18

回答

2

您有用於連接C++與C#三個選項:

  1. 的PInvoke:你在C#中指定的函數簽名,並給他們指定哪些DLL他們居住在一個特性,這將是相當痛苦的,如果你需要做的傳遞任何複雜的類型。

  2. COM:C++ DLL將實現一個由C#代碼調用的COM對象。

  3. C++/CLI:允許在單個C++項目中混合託管和非託管C++代碼。與其他庫的接口非常好,但至少在VS 2010中,缺乏有用的功能,如智能感知。如果你真的想走這條路,我會寫三個項目:你的核心C++代碼作爲一個靜態庫,你的C++/CLI DLL來包裝它,以及你的C#應用​​程序。

+0

這不像我期待的。你確定?談到VS2012不表達2010年。那麼他們在鏈接中結合來自不同語言的項目是什麼意思?感謝您花時間回答@ Dark Falcon – TDo 2013-02-19 16:43:29

+1

您可以在一個解決方案中使用不同語言的項目。你也可以相互引用它們。例如,C#項目可以引用C++/CLI項目。這就是他們的意思。 – 2013-02-19 16:45:34

+0

好吧,我堅持使用C#和VS2010我認爲。畢竟,而不是多重繼承,我想instanciating頂級內的子類應該工作。我希望更多的點不會在性能上產生很大的差別,即fooA.action()與fooA.A.action()相比......我想......感謝您的幫助! – TDo 2013-02-19 17:17:20

相關問題