【问题标题】:Tools to Convert C# to Managed C++ [closed]将 C# 转换为托管 C++ 的工具 [关闭]
【发布时间】:2015-04-17 19:44:20
【问题描述】:

我有一些用 C# 编写的 .NET 可移植库,我需要将它们移植到 Qt (C++)。由于许多类在很大程度上并不真正依赖于 .NET 框架类,因此我认为使用工具先将 C# 代码转换为托管 C++,然后将其用作移植的基础是一个很好的策略它在 Qt 中使用,而不是用 C++ 重写整个东西

是否有任何免费工具可以将 C# 代码转换或将构建的程序集反编译为托管 C++?

【问题讨论】:

    标签: c# c++ .net decompiler


    【解决方案1】:

    由于许多类在很大程度上并不真正依赖于 .NET 框架类,我认为使用工具先将 C# 代码转换为托管 C++,然后将其用作基础是一个很好的策略将其移植到 Qt 中使用,而不是用 C++ 重写整个东西

    这是推理错误。 托管 C++ 不是 C++。仅仅因为它们在语法上相似并不会让代码移动过程变得更容易,相反,你会让事情变得不必要地困难。

    首先想到的是内存管理。您的托管 C++ 项目将使用 GC 对象引用(^ 类型),它不能轻易转换为 C++ 内存管理语义,除非您有自己的垃圾收集库,否则这也不能自动完成。融入您现有的程序。

    .NET 不仅仅是框架类,但要考虑运行时环境。我已经谈到了 GC,但是 Exceptions 呢?穿线? ABI?以此类推。

    最好用纯惯用的 C++ 重写它,而不是制造一个试图跨越 CLR 和假装 C++ 的混乱。

    【讨论】:

    • 感谢您的意见。我明白你想说什么,我已经考虑过了。但就目前而言,我试图转换的项目具有非常琐碎的逻辑,但只包含大量的类,这使得手动重写很乏味。它们不涉及任何线程或异常处理。
    • @DarthCorder 如果你有很多 POCO 类,你可以将它们复制并粘贴到 C++ 中,并使用一些基于正则表达式的 Find+Replace 操作来使它们在语法上符合并编译。
    猜你喜欢
    • 1970-01-01
    • 2010-10-28
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多