将C ++移植到C ++ / CLI是否很困难?

时间:2009-11-20 14:17:35

标签: c++ c++-cli

我想你不能简单地使用C ++ / CLI编译器编译C ++应用程序。我想知道这是否会很困难。有没有人试过这个,如果有的话:需要进行很多修改吗?

2 个答案:

答案 0 :(得分:5)

这种情况有点像将C编译为C ++。大多数C将编译为C ++,但与您作为示例C ++的想法相比还有很长的路要走,所以在您使用它之前,您可能希望修改它(通常很多)。

同样,大多数C ++都会编译为C ++ / CLI,但是你可能不会那么真正地使用它。

答案 1 :(得分:2)

这适用于几乎所有本机C ++代码。它将被转换为IL,就像托管代码一样,并在运行时获得JIT编译。由于C ++互操作,您可以自由地调用托管代码。我知道无法编译的唯一非托管代码构造是__fastcall关键字。 const关键字存在一个问题,它使用属性进行了不完美的模拟,但这只是导入元数据时的一个问题。就像你现在一样继续使用头文件。

.NET程序集能够存储机器代码以及IL。您可以通过在编译器出现问题或怀疑生成的代码不是最佳的情况下有选择地关闭IL生成来利用此功能。用#pragma:

包装你的代码
#pragma managed(push,off)
void CompiledToMachineCode() {
  // etc..
}
#pragma managed(pop)

当#include为没有/ clr编译选项单独编译的.libs的头时,你还需要使用这个#pragma。