2008-09-16 145 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#(也可能反之亦然)。