将C ++ / CLI转换为C#

时间:2009-09-21 13:52:29

标签: c# c++-cli

如何将小型C ++ / CLI项目转换为c#

3 个答案:

答案 0 :(得分:6)

一个环形交叉口,手动方式是编译C ++ / CLI项目并在Reflector中打开输出程序集。反汇编每个类,让它将反汇编的IL转换为C#,并保存该代码。

至于一种自动的方式,我无法想到任何问题。

有人说,你确定你真的希望将你的项目转换为C#吗?如果您的C ++ / CLI项目使用任何非托管代码,那么您将很难想出一个纯粹的托管代码。如果项目或多或少由纯CLR代码组成,并且为了用C ++ / CLI编写而用C ++ / CLI编写,我可以理解想要将它转换为C#。但如果有理由在C ++ / CLI中编写它,您可能希望保持这种方式。

答案 1 :(得分:4)

恕我直言,逐行是最好的方法。我已经将几个C ++风格的项目移植到托管语言中,我尝试了各种方法;翻译,逐行,脚本等...随着时间的推移,我发现最有效的方法是逐行完成,即使它看起来像最初的最慢的方式。

翻译中丢失的太多了。没有翻译是完美的,你最终花了很多时间修复翻译的代码。此外,翻译的代码通常是丑陋的,并且往往比手工制作的代码更不易读。所以结果是一个固定的,不是很漂亮的代码库。

我一行一行的提示

  • 首先定义所有叶子类型
  • 对于每个具有非平凡(释放内存)析构函数的类型,实现IDisposable
  • 启用FxCop规则,检查是否缺少Dispose调用以捕获所有使用基于堆栈的RAII并错过它的地方
  • 密切关注C ++中byref的用法。

答案 2 :(得分:1)

我还没有尝试过,但我只是用Google搜索并找到了这个:http://code2code.net/ 根据它,你不应该完全依赖它产生的代码:

  

您接受此页面只完成了一半的工作。   您需要进行更多的工作。在大多数情况下,翻译的代码甚至不会编译。

另外,请阅读:Translate C++/CLI to C#