C++和C#是相似的编程语言,我认为。如果需要将C++代码移植到只支持C#的平台上,需要做多少工作呢?
我应该准备好大部分C++代码需要重写成C#吗?还是因为语言相似,重构会相当容易和直接?
我知道这取决于应用本身,但我是在一般情况下询问。
C++和C#是相似的编程语言,我认为。如果需要将C++代码移植到只支持C#的平台上,需要做多少工作呢?
我应该准备好大部分C++代码需要重写成C#吗?还是因为语言相似,重构会相当容易和直接?
我知道这取决于应用本身,但我是在一般情况下询问。
最近,我把一个C++应用程序重构成了C#。总体而言,这是一次愉快的经历。以下是我采取的步骤,它们可能适用于您的应用程序,也可能不适用。
只需使用/clr编译器选项编译C ++代码。这将把代码转换为IL,可以在大多数.NET支持的平台上运行。有很少量的C ++结构无法转换,它必须使用非标准的编译器扩展,如__fastcall。
但是,我怀疑您会发现该平台要求可验证的代码。这是平台限制代码仅使用.NET兼容语言的常见原因。由于指针操作,原生C ++转换为IL不可验证。如果是这种情况,那么您需要进行相当彻底的重写。
我很想知道C#是哪个“唯一支持的平台”。
重新用一种新语言编写代码时,问题在于是否需要重新编写每个部分的代码,完全不能使用任何旧代码。有时候,即使进行重写,最好也是将其更改为一种重构:重写某些部分的代码,移动其他部分。现有代码已知可行,而且复制起来可能很麻烦,也会花费时间。必须有充分的理由才能进行完整的重写。
.NET支持C++的一个版本,Visual Studio也带有Visual C++以构建标准的C++,因此请考虑是否可以将其作为分阶段转换,并且是否真的需要完全重写整个项目。