代码之家  ›  专栏  ›  技术社区  ›  Bader

将C++/CLI转换成C语言

  •  2
  • Bader  · 技术社区  · 17 年前

    如何将小型C++/CLI项目转换为C语言

    3 回复  |  直到 17 年前
        1
  •  6
  •   Rob    17 年前

    一个迂回,手动方式将编译您的c++/CLI项目,并打开输出程序集 Reflector . 分解每个类,让它将分解后的IL转换为C,并将代码保存下来。

    至于一种自动的方法,我想不出有什么高高在上的。

    那些话,你确定你真的 希望 将项目转换为C?如果C++/CLI项目使用任何非托管代码,则遇到一个纯管理的等价物将很困难。如果项目或多或少是由纯CLR代码组成的,它是用C++或CLI编写的,以便用C++或CLI编写,我能理解它想把它转换成C语言。但是如果有一个理由在C++中使用它,你可能希望保持这种方式。

        2
  •  4
  •   JaredPar    17 年前

    嗯,一行一行是最好的办法。我已经将几个C++风格的项目移植到托管语言中,我尝试过各种方法:翻译器、逐行、脚本等……随着时间的推移,我发现最有效的方法是一行一行地完成它,即使它一开始看起来是最慢的方法。

    翻译中损失太多。没有一个翻译是完美的,你最终花了很多时间来修复翻译后的代码。此外,作为一个规则,翻译代码是丑陋的,往往比手工编写的代码可读性差。所以结果是一个固定的,不是很好的代码库。

    我的一些小贴士一行接一行

    • 首先定义所有叶类型
    • 对于每个具有非平凡(释放内存)析构函数的类型,实现IDisposable
    • 打开fxcop规则,检查是否缺少dispose调用,以捕获所有使用基于堆栈的raii并忽略它的位置。
    • 非常关注BYREF在C++中的使用。
        3
  •  1
  •   Community Mohan Dere    9 年前

    我没试过,只是在谷歌上找到了: http://code2code.net/ 根据它,您不应该完全依赖它生成的代码:

    您接受此页面只完成一半的工作。 你还需要做进一步的工作。在大多数情况下,翻译后的代码甚至不会编译。

    另外,请阅读: Translate C++/CLI to C#