我有一个使用C ++ / CLI的小型到中型项目。我真的很讨厌C ++ / CLI的语法扩展,我宁愿在C#中工作。是否有一种工具可以很好地将一种工具转换为另一种工具?
编辑:我之前说过托管c ++之前我显然是指c ++ / CLI
答案 0 :(得分:4)
如果C ++代码是纯托管的,您只能将托管C ++代码(和C ++ / CLI代码)翻译为C#。如果不是 - 即如果源中包含本机代码 - 像.NET Reflector这样的工具将无法为您翻译代码。
如果您确实混入了本机C ++代码,那么我建议尝试将本机代码移动到单独的DLL中,通过易于识别的存根函数替换对DLL函数的调用,将项目编译为纯.NET库,然后使用.NET反射器解编译成C#代码。然后,您可以通过p调用对本机DLL的调用来替换对存根函数的调用。
祝你好运!我觉得你!答案 1 :(得分:2)
.NET托管C ++就像火车残骸。但是你看过C ++ CLI吗?我认为微软在这个领域做得很好,使C ++成为一流的.NET公民。
答案 2 :(得分:2)
我不确定这是否有效,但请尝试使用.Net Reflector和ReflectionEmitLanguage插件。 RelelectionEmitLanguage插件声称将程序集转换为c#代码。
答案 3 :(得分:0)
返回〜2004 Microsoft确实有一个可以将托管C ++转换为C ++ / CLI的工具......我们在几个项目上运行它,但说实话,清理项目的工作量不亚于首先手工完成转换的工作量。我不认为这个工具曾经公开发布过(也许是因为这个原因)。
我不知道您正在使用哪个版本的Visual Studio,但我们管理的C ++代码无法使用/ clr:oldSyntax开关使用Visual Studio 2005/2008进行编译,我们仍然有一个文件VS 2003它。
我不知道从C ++到C#的任何方式都是有用的...你可以尝试通过反射器将它绊倒:)
答案 4 :(得分:0)
此类项目通常在c ++ / cli中完成,因为C#对于任务来说并不是一个优雅的选项。例如如果你必须与一些本地C ++库接口,或者在低级别C中做非常高性能的事情。所以只要确保选择c ++ / cli的人没有充分的理由在进行切换之前这样做。
话虽如此,我非常怀疑有什么可以满足你的要求,原因很简单,并非所有C ++ / cli代码都可以转换为C#(反过来也可以这样)。