我有一些用C#编写的.NET可移植库,我需要移植到Qt(C ++)。由于许多类在很大程度上并不真正依赖于.NET框架类,我认为使用工具首先将C#代码转换为托管C ++然后使用它作为基础是一个很好的策略。将它移植到Qt中而不是用C ++重写整个东西
是否有任何免费工具可以转换C#代码或将构建的程序集反编译为托管C ++?
答案 0 :(得分:3)
由于许多类在很大程度上并不真正依赖.NET框架类,我认为使用工具首先将C#代码转换为托管C ++然后以此为基础是一个好策略将它移植到Qt中而不是用C ++重写整个东西
这是推理中的错误。 托管C ++不是C ++ 。仅仅因为它们在语法上相似并不会使代码的移动过程变得更容易,相反,你会使自己的事情变得更加困难。
首先想到的是内存管理。您的托管C ++项目将使用无法轻松转换为C ++内存管理语义的GC对象引用(^
类型),除非您拥有自己的垃圾收集库,否则这些内容也不能自动完成准备好编织你现有的程序。
.NET比框架类更多,但考虑运行时环境。我已经触及了GC,但是例外呢?线程? ABI?等等。
你最好用纯粹的惯用C ++重写它,而不是创造一个试图跨越CLR并伪装成C ++的混乱。