5

我有一个使用 C++/CLI 的中小型项目。我真的很讨厌 C++/CLI 的语法扩展,我更喜欢在 C# 中工作。有没有一种工具可以很好地将一个翻译成另一个?

编辑:当我说托管 c++ 之前我显然是指 c++/CLI

4

5 回答 5

6

如果 C++ 代码是纯托管的,则只能将托管 C++ 代码(和 C++/CLI 代码)转换为 C#。如果不是 - 即如果源代码中包含本机代码 - .NET Reflector 等工具将无法为您翻译代码。

如果您确实混合了本机 C++ 代码,那么我建议您尝试将本机代码移动到单独的 DLL 中,用易于识别的存根函数替换对 DLL 函数的调用,将您的项目编译为纯 .NET 库,然后使用.NET 反射器反编译成 C# 代码。然后,您可以通过对本机 DLL 的 p-invoke 调用来替换对存根函数的调用。

祝你好运!我对你有感觉!

于 2008-09-16T16:41:48.710 回答
2

.NET 托管 C++ 就像火车残骸一样。但是您是否研究过 C++ CLI?我认为微软在这个领域做得很好,使 C++ 成为一流的 .NET 公民。

http://msdn.microsoft.com/en-us/magazine/cc163852.aspx

于 2008-09-16T15:57:17.223 回答
2

我不确定这是否可行,但请尝试使用.Net ReflectorReflectionEmitLanguage插件。RelelectionEmitLanguage 插件声称将您的程序集转换为 c# 代码。

于 2008-09-16T16:34:30.880 回答
1

早在 2004 年左右,微软确实有一个工具可以将托管 C++ 转换为 C++/CLI ......有点。我们在几个项目上运行它,但老实说,清理项目剩下的工作量不亚于一开始手动进行转换的工作量。我不认为该工具曾经公开发布过(也许是因为这个原因)。

我不知道您使用的是哪个版本的 Visual Studio,但我们使用 /clr:oldSyntax 开关管理了无法与 Visual Studio 2005/2008 一起编译的 C++ 代码,并且我们仍然有一个 VS 2003 的遗物。

我不知道以一种有用的方式从 C++ 到 C# 的任何方式......你可以尝试通过反射器来回往返:)

于 2008-09-16T16:12:17.237 回答
0

此类项目通常在 c++/cli 中完成,因为 C# 并不是该任务的真正优雅选择。例如,如果您必须与一些本地 C++ 库交互,或者在低级 C 中执行非常高性能的工作。因此,请确保选择 c++/cli 的人在进行切换之前没有充分的理由这样做。

Having said that, I'm highly skeptical there's something that does what you ask, for the simple reason that not all C++/cli code is translatable to C# (and probably vice versa too).

于 2008-09-16T17:39:27.993 回答