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

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

有帮助吗?

解决方案

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

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

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

其他提示

.NET 托管 C++ 就像火车失事一样。但是您研究过 C++ CLI 吗?我认为 Microsoft 在这个领域做得非常出色,使 C++ 成为一流的 .NET 公民。

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

我不确定这是否有效,但尝试使用 .Net反射器 随着 反射发射语言 插入。RelelectionEmitLanguage 插件声称可以将您的程序集转换为 C# 代码。

早在 2004 年,微软就有了一个可以将托管 C++ 转换为 C++/CLI 的工具......有点。我们在几个项目上运行了它,但说实话,清理项目所需的工作量并不少于首先手动进行转换的工作量。我认为该工具从未公开发布过(也许是因为这个原因)。

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

我不知道有什么方法可以有效地从 C++ 过渡到 C#...你可以尝试通过反射器往返:)

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

话虽如此,我非常怀疑是否有某种东西可以满足您的要求,原因很简单,并非所有 C++/cli 代码都可以翻译为 C#(反之亦然)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top