我们可以在CLR下编译的库中使用“Boost”库吗?

时间:2010-09-08 12:22:07

标签: visual-studio-2008 visual-c++ boost clr

因此很容易创建一个win 32项目并使用boost。我还没试过,但我打算。我想知道我是否可以在CLR模式下使用boost。可能吗?有人试过吗?

1 个答案:

答案 0 :(得分:3)

是的,那应该不是问题。很少有本地C ++结构无法转换为IL。 Varargs曾经是一个问题,但已经解决了,我只知道__fastcall是不可翻译的。不会有问题,Boost不会使用它。我所知道的唯一另一个问题是有很多全局变量。它们需要嵌入CLR类中,并且类不能超过65535个字段。当CLR加载程序尝试加载程序集时,您将收到异常。你需要一些漂亮的,特殊的代码来接近这个限制。

第二个考虑因素是这样做是否真的有意义。首先使用本机代码的关键是利用代码优化器可以花费的时间来优化它。通过将代码转换为IL来抛弃它,JIT优化器没有相同的奢侈品。

利用C ++ Interop,它可以从托管值类型转换为本机类型,而无需编写任何粘合代码。只需关闭IL生成即可。像这样:

#pragma managed(push, off)
// Native code goes here
//...
#pragma managed(pop)
// Managed code goes here