2008-09-16 143 views
3

我有一個C++/CLI中的小型到中型項目。我真的很討厭C++/CLI的語法擴展,我寧願在C#中工作。有沒有一個工具可以把一個人翻譯成另一個人?將C++/CLI轉換爲C#

編輯:當我所述託管C++之前我顯然意味着C/CLI

回答

4

如果C++代碼是純管理的,則只能將託管C++代碼(和C++/CLI代碼)轉換爲C#。如果它不是 - 即源代碼中包含本地代碼 - .NET Reflector等工具將無法爲您翻譯代碼。

如果你確實有混合的本地C++代碼,那麼我建議嘗試將本地代碼移動到單獨的DLL中,通過容易識別的存根函數替換對DLL函數的調用,將項目編譯爲純.NET庫,然後使用.NET反射器將其解編譯爲C#代碼。然後,您可以通過對原生DLL的p-invoke調用來替換對存根函數的調用。

祝你好運!我感覺到你!

0

返回〜2004年微軟確實有將轉換託管C++到C++/CLI ......之類的工具。我們在幾個項目上運行了它,但說實話,清理該項目的工作量不亞於原先進行手動轉換的工作量。我不認爲這個工具曾經公開發布過(可能是出於這個原因)。

我不知道你使用的是哪個版本的Visual Studio,但是我們已經管理了C++代碼,它不會使用Visual Studio 2005/2008使用/ clr:oldSyntax開關進行編譯,我們仍然有一個VS 2003爲了它。

我不知道的一個有用的方式從C++將C#什麼辦法...你可以試試輪跳閘它通過反射:)

0

這樣的項目通常在C++/cli中完成,因爲C#對於任務來說並不是一個優雅的選項。例如如果您必須與某些本地C++庫進行交互,或者在低級別C中執行非常高性能的工作,那麼只要確保選擇C++/cli的用戶沒有充分的理由在切換之前執行此操作。儘管如此,我非常懷疑有些東西可以滿足您的要求,原因很簡單,並非所有的C++/cli代碼都可以轉換爲C#(也可能反之亦然)。