2011-06-15 85 views
2

這是一種複雜的情況。我正在重構(從頭開始)C++,它必須被用作CGI腳本和獨立應用程序的核心。圍繞本機C++圍繞C++/cli環繞c#/ WPF GUI

不幸的是,自從大學以來我就沒有寫過C++,並且對c#/ Java更加熟悉。所以我將使用WPF作爲GUI。從什麼我的研究顯示,這意味着我將是:

1)重構在非託管C基本代碼++(耶的IntelliSense支持,EH)

2)包裝,該基地在託管類庫

3)在C#/ WPF GUI中包裝第2步,通過interop(CLI/CLR)引用它。

第2步,我相信,將會有詳細記錄。但是,我從頂層開始,找不到任何關於如何實例化和使用在託管C++中創建/展示的類的具體內容。我只是寫在c#中的所有東西,如果我有我的druthers(不需要核心效率),但我沒有這個選擇。

有人能指出我在第3步的正確方向,以便我可以開始研究它嗎?我不想讓任何人爲我做作業(可以這麼說),但是我對這個過程的研究並沒有結果。

+0

注意:託管C++不再存在。 C++/CLI是它的替代品。前者是C++的擴展,後者是一種全新的語言。使用「Managed C++」可能會導致混淆,因爲人們會認爲你在談論Visual Studio 2003 – 2011-06-15 18:42:26

回答

3

如果將託管的C++類封裝在託管的CLI/C++對象中,則不需要Interop調用託管類(Visual C++將在同一個庫中編譯託管和非託管C++)。

只需將混合託管/非託管庫引用到託管C#應用程序,並且這些公開託管對象的行爲將與任何常規對象相似。

爲了一個好的起點檢查出this文章。

+0

所以我不需要使用任何特殊的魔法來轉換數據類型/內置類型時,在c#並管理C++?這是一種解脫,我會誠實的。 – 2011-06-15 18:34:21

+0

@Eric我的意思是,這取決於CLI/C++類的公共接口有多複雜。它可以像你一樣簡單或複雜。 – 2011-06-15 18:38:14

+0

由於最終的部署環境是CGI(因此是雙重包裝),我將盡可能簡化它。再次感謝您的信息。 – 2011-06-15 18:39:41