将c++ /CLI转换为c#

我有一个小型到中型的项目,是在c++ /CLI。我真的很讨厌c++ /CLI的语法扩展,我更喜欢使用c#。有没有一种工具可以很好地将两者转换成另一种?

编辑:我之前说的Managed c++显然指的是c++/CLI

请先 登录 后评论

5 个回答

Jorge Ferreira

。net Managed c++就像一列失事的火车。但是你有研究过c++ CLI吗?我认为微软在这方面做得很好,使c++成为。net的一等公民。

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

请先 登录 后评论
Rob Walker

早在2004年,微软确实有一个工具可以将托管c++转换为c++ /CLI…排序的。我们在几个项目中运行了它,但说实话,清理项目所剩下的工作量并不少于最初手工进行转换所需要的工作量。我认为这个工具还没有正式发布(可能就是因为这个原因)。

我不知道你用的是哪个版本的Visual Studio,但我们已经使用/clr:oldSyntax开关管理了c++代码,这些代码不能用Visual Studio 2005/2008编译,我们仍然有一个残留的VS 2003。

我不知道从c++到c#有什么有用的方法…你可以试着通过反射器绕过它:)

请先 登录 后评论
Vivek

我不确定这是否会工作,但尝试使用。net ReflectorReflectionEmitLanguage插件。RelelectionEmitLanguage插件声称可以将程序集转换为c#代码。

请先 登录 后评论
Kevin

如果c++代码是纯托管的,则只能将托管c++代码(以及c++ /CLI代码)转换为c#。如果不是,也就是说,如果源代码中包含了原生代码,像。net Reflector这样的工具就不能为你翻译代码。

如果你确实混合了原生c++代码,那么我建议尝试将原生代码移到一个单独的DLL中,用容易识别的存根函数替换对DLL函数的调用,将你的项目编译为纯。net库,然后使用。net反射器将其反编译为c#代码。然后,您可以通过对本机DLL的p-invoke调用替换对存根函数的调用。

好运!我同情你!

请先 登录 后评论
Assaf Lavie

这类项目通常是用c++/cli完成的,因为c#并不是完成任务的最佳选择。例如,如果你必须与一些原生c++库交互,或者在低级别C中完成非常高性能的工作,那么在切换之前,只要确保选择c++/cli的人没有很好的理由这样做就可以了。

说了这么多,我非常怀疑是否有什么东西能满足你的要求,原因很简单,不是所有的c++ /cli代码都可以翻译成c#(可能反之亦然)。

请先 登录 后评论
  • 23 关注
  • 0 收藏,223 浏览
  • Matthew Scouten 提出于 2022-11-02 18:59